【发布时间】:2017-05-18 11:46:34
【问题描述】:
最近我将机器的操作系统从 Windows 更改为 Linux,但现在我的 PHP 应用程序似乎没有在新机器中运行 opendir() 函数。以下是我的代码:
public function scandirs($dir){
$listDir = array();
if($handler = @opendir($dir)) {
while (($sub = readdir($handler)) !== FALSE) {
if ($sub != "." && $sub != ".." && $sub != "Thumb.db") {
if(is_file($dir."/".$sub)) {
$listDir[] = $dir.'\\'.$sub;
}
elseif(is_dir($dir."/".$sub)){
$listDir[$sub] = scandirs($dir."\\".$sub);
}
}
}
closedir($handler);
}
return $listDir;
}
如果我执行var_dump(opendir($dir));,它只会返回一个错误。
编辑
我需要补充一点,我正在从 Linux 终端运行文件。
【问题讨论】:
-
变量
$dir的内容是什么? -
地址是/var/www/html/esurance365/app/sys/project
-
如果您从命令行(终端)运行脚本,它将使用您的权限执行。终端中
ls /var/www/html/esurance365/app/sys/project的输出是什么?project是目录吗?opendir()如果其第一个参数不是目录(或不允许打开它)则失败。删除errors suppression operator (@),让它显示失败的原因。 -
@axiac 我已经删除了它,它只返回一个 bool(false)
-
您的错误可能在全局级别被抑制(或登录到
php_errors.log)。将error_reporting(E_ALL); ini_set('display_errors', '1');放在脚本顶部,您将在屏幕上看到它们。