PHP: почему readdir работает для меня в командной строке, а не в браузере? - PullRequest
0 голосов
/ 30 августа 2010

У меня есть 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 ]

0 голосов
/ 30 августа 2010

Что ж, теперь вы знаете ответ: его SAFE_MODE, одна из самых уродливых функций PHP.
Есть некоторые обходные пути, но лучшая из них - , запускайте с этого хоста как можно быстрее!
или найдите способ отключить его.

0 голосов
/ 30 августа 2010

Я понял это.Сервер, на котором я работаю, имеет локальные конфигурационные файлы для каждого vhost.safe_mode был включен для локальной конф.

Спасибо тем, кто привел меня на путь.

0 голосов
/ 30 августа 2010

Каковы разрешения для папки duh?Помните, что веб-сервер будет работать с другим идентификатором пользователя, нежели ваша учетная запись оболочки.Убедитесь, что режим директории 0755 доступен для чтения всем пользователям.

Упс, просто ваш комментарий с сообщением об ошибке.Итак, да, ошибка разрешений.duh принадлежит пользователю с идентификатором 10012, а ваш веб-сервер работает от имени пользователя root.Безопасный режим не позволит этого.'chown' каталог, который будет принадлежать пользователю root ...

Конечно, почему веб-сервер работает от имени пользователя root?Это ужасно небезопасно.

...