I apologize - I also could not reproduce the bug in the simple test script
I previously submitted - I was sure that that would reproduce it. But it
did not match exactly what
was going on in my actual script.
The problem seems to only occur when two file_exists statements are used in
a row and the
path argument used uses the same "slash style" each time.
See the attached script - it is commented so you can see the problem and it
should work - I have tested this one. Thanks.
At 07:07 AM 7/11/01 +0000, you wrote:
>ID: 12033
>Updated by: zak
>Reported By: [EMAIL PROTECTED]
>Old Summary: file_exists doesn't work properly with variables
>Status: Open
>Bug Type: Any
>Operating System: Win 95
>PHP Version: 4.0.5
>New Comment:
>
>I cannot reproduce this under Windows 2000 with PHP 4.0.6
>
>Do you get the same error if you use a literal value instead of a variable.
>
>ie.
>var_dump (file_exists ("c:/some_random_file_name"));
>or
>var_dump (file_exists ("c:\\some_random_file_name"));
>
>Previous Comments:
>------------------------------------------------------------------------
>
>[2001-07-11 01:00:59] [EMAIL PROTECTED]
>
>The following won't work in Win95:
>
>$path="c:/test.bat";
>if(file_exists($path)) {print "file $path exists"}
>
>This will report a file existing even though it doesn't. You might think
>that this is because we are using forwardslashes in windows BUT IF you
>then parse $path to replace the forwardslashes with backslashes (using a
>regular expression) it still doesn't work. BUT if you do this:
>$path="\"".$path."\"";
>(leaving $path with forward slashes) it does work properly.
>
>I suppose this is a bug?
>
>------------------------------------------------------------------------
>
>
>
>ATTENTION! Do NOT reply to this email!
>To reply, use the web interface found at http://bugs.php.net/?id=12033&edit=1
<?php
/*This is an example of an apparent bug using file_exists twice (tested on a win95
system using
php 4.0.4 cgi version, omnihttpd). The second test of file_exists will report a false
positive
(that the file does exist when it doesn't) unless you use a unix style path as an
argument to
the first test, and a dos style as an argument to the second test, or vice-versa, i.e,
you
will get a false positive on the second statement if you use the same path style both
times
even though the first file_exist statement will evaluate properly.Also see comments
below. */
$ms_windows=true;
echo "<html><body>\r\n";
//create test file
$file_name="c:\\test\\test_file_exist.txt";
exec("dir > $file_name");
echo "File $file_name created<br>";
$file_name_unix="c:/test/test_file_exist.txt";
$file_name_dos="c:\\test\\test_file_exist.txt";
/******First File_Exist Test *******
This will always evaluate properly but the style of the argument used effects whether
the second
file_exist test below works."
************************************/
//if(file_exists($file_name_unix)){
if(file_exists($file_name_dos)){
deleteFile($file_name);
echo "File $file_name deleted";
} else {
echo "Can't find $file_name - not deleting<br>";
}
/*****Second File_Exist Test ************************
The file_exist statement below won't evaluate properly (giving a false positive)
unless you
use unix style file name first, then dos style second, or dos style first, and unix
style second.
Can't use them at same time - otherwise this second file_exist test will report that
the file
does exist when it doesn't exist.
Test this for yourself by alternating the commented if statements in the first and
second file
exist tests. The script as written will produce a false positive that the file does
exist.
******************************************************/
//if(file_exists($file_name_unix)){
if(file_exists($file_name_dos)){ //To fix, comment out this line,
and remove the // on the above line OR you can do the same for the first file_exist
test above
echo "<br>File $file_name exists<br>";
} else {
echo "<br>File $file_name does not exist<br>";
}
function deleteFile($file_name) {
global $ms_windows;
if($ms_windows) {
// $file_name=formatPath($file_name);
exec("del $file_name");
} else {
unlink($file_name);
}
}
?>
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]