Php is_dir和is_file不使用来自根目录的路径

Php is_dir和is_file不使用来自根目录的路径,php,web,filesystems,Php,Web,Filesystems,我正在使用scandir()检查一个目录文件,它可以正确使用根目录的路径,如/dir1/dir2/。。。。(dir1不在我的.php文件后面,它是根目录中的一个文件夹) 但当在同一路径上使用is_dir和is_文件时,会输出错误的结果 如何修复此问题?请尝试此方法 function getDirContents($dir) { $handle = opendir($dir); if (!$handle) return array(); $contents = array(

我正在使用scandir()检查一个目录文件,它可以正确使用根目录的路径,如/dir1/dir2/。。。。(dir1不在我的.php文件后面,它是根目录中的一个文件夹)

但当在同一路径上使用is_dir和is_文件时,会输出错误的结果


如何修复此问题?

请尝试此方法

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>";
函数getDirContents($dir){ $handle=opendir($dir); if(!$handle)返回数组(); $contents=array(); 而$entry=readdir($handle)){ 如果($entry==”。| |$entry==”..)继续; $entry=$dir.DIRECTORY\u SEPARATOR.$entry; if(is_文件($entry)){ $contents[]=$entry; }else如果(is_dir($entry)){ $contents=array_merge($contents,getDirContents($entry)); } } closedir($handle); 返回$contents; } $directoryPath='Path to folder'; $getDirContents=getDirContents($directoryPath); 回声“; 打印(获取目录); 回声“;
只需看看PHPs自己的对象,它比单个函数更快、更详细


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

该文件的权限如何?为什么OP应该在不知道其作用的情况下尝试您的答案?一个好的答案应该伴随一些解释,“路径示例”到底是什么意思?
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
    if (!$fileinfo->isDot()) {
        var_dump($fileinfo->getFilename());
    }
}