ID: 21087 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Critical +Status: Bogus Bug Type: Filesystem function related Operating System: XP PHP Version: 4.3.0RC3 New Comment:
Your script is broken :) It's taken a few hours for us to realize this and it's pretty easy to overlook. You are locking the file for shared access and then writing to it. This doesn't make sense, because you should really be using an exclusive lock (LOCK_EX) to do this. Under unix systems, flock is an advisory lock, meaning that processes can ignore the lock status if they wish. Under windows, the locking is enforced by the OS which forbids the write access, hence the zero-size file. Additionally, the win32 docs state that closing a file that was locked (but not unlocked) leads to undefined behaviour, so that flock($fp, LOCK_UN) call *is* required for win32. Previous Comments: ------------------------------------------------------------------------ [2002-12-22 08:05:42] [EMAIL PROTECTED] Update summary. LOCK_EX works fine. Additionally, writing to the file prior to obtaining the lock also works fine, but defeats the purpose of the lock. ------------------------------------------------------------------------ [2002-12-21 18:41:37] [EMAIL PROTECTED] Just a further note. It also/still errors on RC4. Also, if you use flock($fp,2) instead of flock($fp,1) it works. ------------------------------------------------------------------------ [2002-12-19 22:27:29] [EMAIL PROTECTED] Small note, the 2nd flock (flock($fp,3);) is entirely optional. The problem is occures if prior to write the LOCK_SH is set on the file, the problem does not happen if LOCK_EX is used. ------------------------------------------------------------------------ [2002-12-19 21:21:56] [EMAIL PROTECTED] It appears to be the flock() call. This fails. However, if you comment out the flock() calls it works. $filename = "c:/phptest.txt"; $data = "This is test text"; $fp = fopen("$filename",'w'); flock($fp,1); $len = fwrite($fp,$data); flock($fp,3); fclose($fp); echo "Wrote $len bytes"; ------------------------------------------------------------------------ [2002-12-19 11:27:09] [EMAIL PROTECTED] Keep this at feedback. (and note that I am not [EMAIL PROTECTED] and that my previous comment on this was my first). ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/21087 -- Edit this bug report at http://bugs.php.net/?id=21087&edit=1