Чтение файлов над webroot - PullRequest
4 голосов
/ 08 июня 2011

В php я пытаюсь прочитать файл, который находится над веб-корнем (например, /home/[username]/games/).Я пытаюсь прочитать файлы .swf и .xml.У меня это работает хорошо на моем локальном сервере LAMP, используя этот код:

@readfile("/home/[username]/games/hangman/example.xml");

Но, тестируя его на внешнем сервере, он не работает.В журнале нет ошибок php, но когда я пытаюсь file_exists(), он возвращает false.Я проверил и дважды проверил, существует ли файл по этому пути.

Права доступа к файлу кажутся правильными (они совпадают с моим локальным сервером), а владелец файла - правильный пользователь.

Редактировать

Небольшое обновление;Я следовал тому, что @gnur должен был сказать, и установил мое базовое имя в моем httpd.conf в настройке виртуального хоста следующим образом:

php_admin_value open_basedir "/:/home/[username]/games/"

Я пытался установить для него другое значение раньше, и он выдавал ошибку:

open_basedir restriction in effect. File(/home/[username]/games/example.xml) is not within the allowed path

Теперь я просто получаю ошибку permission denied при попытке прочитать файл.Поэтому мне интересно, права доступа к файлу или его владельца неправильные.

Это мои текущие права доступа к папке в каталоге с играми:

drwxrwxr-x 2 [username] [username] 4.0K Jun  1 10:13 hangman

А потомфайлы в этом каталоге (те, к которым я на самом деле пытаюсь получить доступ):

-rwxrwxr-x 1 [username] [username]  293 Jun  1 10:13 example.xml
-rwxrwxr-x 1 [username] [username] 204K Jun  1 10:13 hangman.swf

1 Ответ

3 голосов
/ 08 июня 2011

Это как-то связано со значением open_basedir php.ini, см. http://php.net/manual/en/ini.core.php для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...