is_dir和is_file无法使用root的路径

时间:2017-01-03 12:42:17

标签: php web filesystems

即时使用scandir()来检查目录文件,它可以正常使用来自root的路径,如/ dir1 / dir2 / ....(dir1不在我的.php文件后面,它是root文件夹)

但是当在同一路径上使用is_dir和is_file时,它会输出错误的结果

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

请尝试此

function getDirContents($dir) {
    $handle = opendir($dir);
    if (!$handle) return array();
    $contents = array();
    while $entry = readdir($handle)) {
        if ($entry=='.' || $entry=='..') continue;

        $entry = $dir.DIRECTORY_SEPARATOR.$entry;
        if (is_file($entry)) {
            $contents[] = $entry;
        } else if (is_dir($entry)) {  
            $contents = array_merge($contents, getDirContents($entry));
        }
    }
    closedir($handle);
    return $contents;
}

$directoryPath = 'Path to folder';
$getDirContents = getDirContents($directoryPath);
echo "<pre>";
print_r(getDirContents );
echo "</pre>";

答案 1 :(得分:0)

只需看看PHP自己的DirectoryIterator对象,它比单个函数更快,更详细。

$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
    if (!$fileinfo->isDot()) {
        var_dump($fileinfo->getFilename());
    }
}

这段代码直接从文档中删除。它获取当前执行文件的当前目录并迭代它。只要当前的$ fileinfo不是一个点,它就会转储该目录中文件和子目录的文件名。