ID:               39087
 Updated by:       [EMAIL PROTECTED]
 Reported By:      scottayy at gmail dot com
-Status:           Feedback
+Status:           Bogus
 Bug Type:         Directory function related
 Operating System: Windows XP Pro SP2 Build 2600
 PHP Version:      5.1.6
 New Comment:

Sorry, but your problem does not imply a bug in PHP itself.  For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system is not the
appropriate forum for asking support questions.  Due to the volume
of reports we can not explain in detail here why your report is not
a bug.  The support channels will be able to provide an explanation
for you.

Thank you for your interest in PHP.




Previous Comments:
------------------------------------------------------------------------

[2006-10-09 09:46:45] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.2-win32-latest.zip



------------------------------------------------------------------------

[2006-10-09 09:20:13] judas dot iscariote at gmail dot com

Please, go and get a couple of cofee :) this is of course not a bug,
but the expected behaviuor.

your code is checking if the $file dir, exists in the **current
directory** and **not** in the "themes" directory ;P
you need to prepend the **base directory** name in the loop.

I suggest you try something like
http://www.php.net/~helly/php/ext/spl/directoryfilterdots_8inc-source.html
for your work.

------------------------------------------------------------------------

[2006-10-09 05:47:59] scottayy at gmail dot com

Sorry, I forgot to mention that when looping through, '.' and '..' are
recognized as directories with filetype() and is_dir(), but the
directories I created are not.

------------------------------------------------------------------------

[2006-10-09 05:41:27] scottayy at gmail dot com

Description:
------------
PHP fails to recognize directories when looping through a directory. 
filetype() says lstat() fails, and is_dir() returns false.

I have the following directory structure.

/
/themes/
/themes/crap/
/themes/default/

Using this simple script to loop through the themes directory and get
directory names:

Reproduce code:
---------------
<?php
//gather available themes
function get_available_themes()
{
        if($handle = @opendir('themes'))
        {
                $themes = array();
                while(false !== ($file = readdir($handle)))
                {
                        if(is_dir($file) && ($file != '.' && $file != '..'))
                        {
                                $themes[] = $file;
                        }
                }
                
                if(empty($themes))
                {
                        return false;
                }
        } else
        {
                return false;
        }
        
        return $themes;
}


if($themes = get_available_themes())
{
        echo '<pre>';
        print_r(get_available_themes());
        echo '</pre>';
} else
{
        echo 'No themes could be found.';
}
?>

Expected result:
----------------
Array
(
   [0] => crap,
   [1] => default
)

Actual result:
--------------
The function returns false because the array actually contains:

Array
(
)

If I echo out $file during the while() loop, I see

.
..
crap
default


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=39087&edit=1

Reply via email to