php scandir() - 为foreach()[file]提供的参数无效

时间:2013-06-08 23:46:59

标签: php glob scandir

我有一台运行PHP版本5.4.16的服务器,我正在尝试使用scandir列出目录中的文件。我很难搞清楚问题所在。我已经尝试了../store/dir_to_scan和/ root / store / dir_to_scan。我也尝试过使用glob和scandir,如下所示,两者都无济于事。如果我删除了dir_to_scan目录,它将列出/ root / store中的目录,这是我觉得最令人费解的。我还将文件夹和文件chmod到777只是为了确保它不是权限问题。我收到错误“Array([type] => 2 [message] =>为foreach()提供的参数无效[file] => /root/html/test.php [line] => 5) “还运行正确的目录设置。

感谢您的帮助。

目录设置

/root/html //where php script is run
/root/store/dir_to_scan //files I need to list

PHP脚本

<?
 #$files = glob('../store/dir_to_scan/*', GLOB_BRACE);
 $files = scandir("/root/store/dir_to_scan/");
   foreach($files as $file) {

      //do work here
      if ($file === '.' || $file === '..') {
                continue;
       }
    echo $file . "<br>";
}
print_r(error_get_last());
?>

2 个答案:

答案 0 :(得分:0)

这可能很愚蠢,但尝试在结尾处提供一个尾部斜杠:

/ root / store / dir_to_scan - &gt;

$files = scandir("/root/store/dir_to_scan/");

答案 1 :(得分:0)

这应该可以解决你的问题

$carpeta= "/root/store/dir_to_scan";
    if(is_dir($carpeta)){
        if($dir = opendir($carpeta)){
            while(($file = readdir($dir)) !== false){
                if($file != '.' && $file != '..' && $file != '.htaccess'){
                  echo $file;  //or save file name in an array..
                 //  $array_file[] = $file;

                }
            }
            closedir($dir);
        }
    }