ID: 45986
Comment by: michael-l-smith at att dot net
Reported By: david at grudl dot com
Status: Assigned
Bug Type: Filesystem function related
Operating System: win32 only
PHP Version: 5.3CVS-2008-11-11
Assigned To: pajoye
New Comment:
I also observe this issue in multiple Windows OS'. Below is the
offending code:
echo "Modifying $file\n";
$currentFile =
str_replace("c:","C:",$testFileDirectory) . "\\" .
$file;
$fh = fopen($currentFile, 'r') or die("can't
open the original
file");
$tmpfile = getcwd() . "\\temp\\" . rand();
$fp = fopen($tmpfile, 'a') or die("can't open
tmp file");
$temporaryString = "";
while ($tmpStringData = fread($fh,1024))
{
$stringLength =
mb_strlen($tmpStringData);
$coinFlip = rand(0,1);
switch ($coinFlip)
{
case 0:
while
(mb_strlen($temporaryString) < $stringLength)
{
$temporaryString = $temporaryString . rand(0,9);
}
fwrite($fp,$temporaryString);
break;
case 1:
fwrite($fp,$tmpStringData);
break;
}//end switch
}//end while
fclose($fh);
fclose($fp);
rename($tmpfile,$currentFile) or die("Unable to
rename the tmp
file.");
$fileToMD5 = getCWD() .
str_replace("c:","C:",$testFileDirectory) .
"\\";
addMD5($currentFile);
The error occurs during the rename() after fclose(). It seems that the
file is locked or otherwise prevented from being renamed. Perhaps
fclose() is lagging somehow? I have verified that the file does, in
fact, exist when this issue occurs.
Previous Comments:
------------------------------------------------------------------------
[2008-09-03 17:02:39] david at grudl dot com
Description:
------------
Renaming of non-existent file generates in PHP 5.2.6 warning:
Warning: rename(foo,bar) [function.rename]: No such file or
directory
And in PHP 5.3.0 alpha2 it generates warning:
Warning: rename(foo,bar): Bad file descriptor
I am not sure, but maybe this points to any hidden bug in renaming
routine...
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=45986&edit=1