PHP: Почему readdir работает для меня в командной строке, но не браузером?

StackOverflow https://stackoverflow.com/questions/3602419

Вопрос

У меня есть 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.
Есть некоторые обходные пути, но лучшие из них Беги с этого хозяина как можно быстрее!
Или найти способ отключить его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top