Re: is_dir & is_file bugs?

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

 



Yup! That's the one! I was missing PATH...
:)

Thank you very much for such a nice explanation!

-afan


M. Sokolewicz wrote:

Matt M. wrote:

   $path = 'product_images';
   $handle = opendir($path);
   while (false !== ($file = readdir($handle)))
   {
        if ($file != "." && $file != "..")
       {
echo $file;
           if (is_dir($file))
           {
               echo ' <-- folder<br>';
               $folders[] = $file;
           }
           elseif (is_file($file))
           {
               echo ' <-- image<br>';
               $images[] = $file;
           }
           else
           {
               echo ' <-- ???<br>';
           }
       }
   }



try the absolute path in is_dir and is_file

or at least the correct one. Right now, what's hapenning is this:

imagine you have this layout:
/
/product_images/
/product_images/dir1/
/product_images/file1.ext

What your script is doing:
$handle = opendir($path);
while (false !== ($file = readdir($handle)))
{
// $file = '.' // on first run
// $file = '..' // on 2nd run
// $file = 'dir1' // on 3rd run
// $file = 'file1.ext' // on 4th run
if ($file != "." && $file != "..")
{
echo $file;
if (is_dir($file)) // it's not, since that file doesn't exist in the place PHP is looking for it.
// because, does ./dir1/ exist? no! does ./product_images/dir1/ exist? yes!
// But that's not what you're checking ;)
{
echo ' <-- folder<br>';
$folders[] = $file;
}
elseif (is_file($file))
// same thing as with is_dir()
{
echo ' <-- image<br>';
$images[] = $file;
}
else
{
echo ' <-- ???<br>';
}
}
}



-- 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