首页 > 解决方案 > PHP opendir() 和 scandir() 不工作(CentOS 7)

问题描述

我正在尝试使用文件管理类获取 CentOS 7 服务器上目录中所有文件和目录的列表。我要访问的目录是/monitor/demo3(我检查过)。

设计用于执行此操作的类的成员函数应在成功时返回所有文件和目录的数组,在失败时返回 false。这是代码停止工作的部分(其余代码不需要解释这个问题):

try {
    $handle = opendir($path);

    if ($handle !== false) {
        /*
          Some code that's never executed 
          because $handle is always false.
        */
    } else {
        echo 'Failed to open directory! ' . $path;
        return false;
    }
} catch (Error $err) {
    echo $err->getMessage();
    return false;
}

因此,根据官方 PHP 文档opendir()成功时返回目录句柄或抛出错误并在失败时返回 false。但在这种情况下,它以某种方式返回 false,但不会引发错误。无论是否$path是有效的目录路径,都会发生这种情况。

我已经尝试让它与它一起工作scandir(),但发生了完全相同的事情。

当我在我的 Windows 10 PC 上运行它时,它按预期工作并返回一个数组或引发错误。我所改变的只是目录路径和解决方案,并且两者都opendir()有效scandir()

用户 apache 属于具有 sudo 权限的 wheel 组,所有有问题的目录和文件都有 777 个权限(暂时,用于测试)。我尝试将 php.ini 从我的计算机复制到服务器。我完全没有想法。

标签: phpcentos7scandiropendir

解决方案


推荐阅读