php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #25846 is_dir() does not work on any folder other than the current directory
Submitted: 2003-10-12 18:49 UTC Modified: 2003-10-12 20:55 UTC
From: notepad at codewalkers dot com Assigned:
Status: Not a bug Package: Directory function related
PHP Version: 4.3.4RC1 OS: winXP
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: notepad at codewalkers dot com
New email:
PHP Version: OS:

 

 [2003-10-12 18:49 UTC] notepad at codewalkers dot com
Description:
------------
say you have the folder "test" and inside "test" you have:
- images (folder)
- the_following_code.php (file)

inside the "images" folder you have some sub directories. the_following_code will NEVER return true.

if i use !is_dir instead, it then returns the sub directories as files instead of folders. this appears to have been an ongoing problem, perhaps overlooked or under-explained.

Reproduce code:
---------------
function directory($dir)
{
    $mydir = opendir($dir);
    while(false !== ($file = readdir($mydir)))
    {
        if($file != "." && $file != "..")
        {
            if(is_dir($file))
                echo "$file<br>\r\n";
            elseif(is_dir($mydir.$file))
                echo "$file<br>\r\n";
            elseif(is_dir($mydir.$file.'/'))
                echo "$file<br>\r\n";
        }
    }
    closedir($mydir);
}
$path = '/inetpub/wwwroot/Scripts/test/images/';
directory($path);

Expected result:
----------------
i expect a list of sub dirs..

Actual result:
--------------
i get nothing.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-10-12 19:47 UTC] wez@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

readdir() returns only the basename of the filenames, not the full path. You need to manually concatentate the directory name to the filename.
 [2003-10-12 19:57 UTC] notepad at codewalkers dot com
the code above DOES concatentate the directory name to the filename
 [2003-10-12 20:38 UTC] sniper@php.net
No you don't, you're appending a resource, 
RTFM: http://www.php.net/opendir

resource opendir ( string path)



 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 15:01:29 2024 UTC