PHP: Почему readdir работает для меня в командной строке, но не браузером?
-
25-09-2019 - |
Вопрос
У меня есть 2 папки: /var/www/vhosts/mydomain.com/httpdocs/ и /var/www/vhosts/mydomain.com/httpdocs/duh/
Обе папки имеют то же самое то же самое пермую, группу, владелец, все.
Если я устанавливаю $ PATH к первому, без проблем, я повторяю список файлов с «HTML» в именем файле.
Если я установлю $ путь ко второму, он умирает на opendir (). Однако он работает нормально из командной строки, просто не браузер.
Есть идеи?
Вот мой очень простой код:
<?php
$path = "/var/www/vhosts/mydomain.com/httpdocs/duh/";
$img_folder = opendir($path) or die("Unable to open $path");
while (false !== ($file = readdir($img_folder))){
if (eregi("html", $file)){
echo $file;
}
}
?>
Решение 3
Я понял. Сервер, на котором я работаю, имеет локальные файлы конфигурации для каждого VHOST. Safe_Mode был установлен на локальный конф.
Благодаря тем, которые привели меня по пути.
Другие советы
Каковы разрешения на duh
папка? Помните, что веб-сервер будет работать под другим идентификатором пользователя, чем ваша учетная запись оболочки. Убедитесь, что режим DIR 0755, так что это читается всеми пользователями.
К сожалению, просто ваш комментарий с сообщением об ошибке. Итак, да, ошибка разрешений. duh
принадлежит пользователю ID 10012, в то время как ваш веб-сервер работает как root. Безопасный режим не позволит этому. «Chown» каталог, который будет принадлежать корнеску ...
Конечно, почему веб-сервер работает как root? Это ужасно неуверенно.
Ну, теперь вы знаете ответ: его Safe_Mode, один из самых уродственных функций PHP.
Есть некоторые обходные пути, но лучшие из них Беги с этого хозяина как можно быстрее!
Или найти способ отключить его.