file_exists, Windows, and EasyPHP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux