I've written a plugin for DokuWiki which uses the following DokuWiki
function for reading files:
function io_readFile($file,$clean=true){
$ret = '';
if(@file_exists($file)){
if(substr($file,-3) == '.gz'){
$ret = join('',gzfile($file));
}else if(substr($file,-4) == '.bz2'){
$ret = bzfile($file);
}else{
$ret = join('',file($file));
}
}
if($clean){
return cleanText($ret);
}else{
return $ret;
}
}
On Linux machines, this seems to behave as you would hope, that is, if
the file doesn't exist then you get back a null string. In any event,
none of the users who have installed it on Linux machines have had a
problem with it. And I have done several installs myself. But one user
installed the plugin on a Windows machine and the code fell through to
$ret = join('',file($file)) even though there was no $file. The result
was an error message:
Permission denied in *E:\Program Files\EasyPHP
2.0b1\www\dokuwiki\inc\io.php* on line *97
*Line 97 is the join. So the function is attempting to read a
non-existent file.
I was just wondering whether there is some difference in the way his PHP
version handles the @ operator in:
if(@file_exists($file))
That is, is it possible that by suppressing errors, this expression
somehow returns true? And is it a bug?
Thanks.
Myron
--
_____________________
Myron Turner
http://www.room535.org
http://www.bstatzero.org
http://www.mturner.org/XML_PullParser/
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php