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, оно работает как положено и возвращает массив или выдает ошибку. Все, что я изменил, — это путь к каталогу, и решения с opendir() и scandir() работали.

Пользователь apache находится в группе wheel с правами sudo, все рассматриваемые каталоги и файлы имеют права 777 (временно, для проверки). Я попытался скопировать php.ini со своего компьютера на сервер. У меня совсем нет идей.


person Andraž Podpečan    schedule 09.06.2020    source источник
comment
Добро пожаловать в мир SELinux. Вы его настроили? Прежде чем работать с любым дистрибутивом Linux, вы должны знать его основы и понимать основы.   -  person emix    schedule 09.06.2020
comment
Согласно документам (возвращает ресурс дескриптора каталога в случае успеха или FALSE в случае сбоя) он (opendir()) возвращает FALSE в случае сбоя!   -  person Luuk    schedule 09.06.2020