即使文件存在,php dir函数也会返回null

时间:2017-08-02 09:18:13

标签: php

我正在使用php dir()函数从目录中获取文件并循环遍历它。

$d = dir('path');

while($file = $d->read()) {
  /* code here */
}

但是这会返回false并给出

  

在null

上调用成员函数read()

但该目录存在且文件存在。

此外,我的上述代码还有其他选择吗?

4 个答案:

答案 0 :(得分:1)

尝试使用它:

if ($handle = opendir('/path/to/files')) {
    echo "Directory handle: $handle\n";
    echo "Entries:\n";

    /* This is the correct way to loop over the directory. */
    while (false !== ($entry = readdir($handle))) {
        echo "$entry\n";
    }

    /* This is the WRONG way to loop over the directory. */
    while ($entry = readdir($handle)) {
        echo "$entry\n";
    }

    closedir($handle);
}

来源: http://php.net/manual/en/function.readdir.php

答案 1 :(得分:1)

你可以试试这个:

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

来源:PHP script to loop through all of the files in a directory?

答案 2 :(得分:0)

如果您的路径正确,请检查您的文件路径。那么请尝试这个代码,这可能对你有所帮助。感谢

  <?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output one character until end-of-file
while(!feof($myfile)) {
  echo fgetc($myfile);
}
fclose($myfile);
?>

答案 3 :(得分:0)

如果您查看documentation,您会看到:

  

返回Directory的实例,或带有错误参数的NULL,或   如果发生其他错误,则为FALSE。

所以Call to member function read() on null表示您收到了错误(我认为这是failed to open dir: No such file or directory in...)。

您可以使用file_existsis_dir来检查给定路径是否是目录以及它是否真的存在。

示例:

<?php
...
if (file_exists($path) && is_dir($path)) {
    $d = dir($path);

    while($file = $d->read()) {
      /* code here */
    }
}