Периодически невыполняется open_basedir

v7

Guest
Периодически не выполняется open_basedir

Проблема такая - при чтении и записи локальных файлов ( file_get_contents() и fopen() соответственно) иногда выдаются ошибки (4 раза файл 1.txt считывается нормально, на пятый раз - ошибка). Права на директорию - 777, на файлы - 644.
Вот пример ошибки:
Warning: file_get_contents(): open_basedir restriction in effect. File(dir0/1.txt) is not within the allowed path(s): (/home/mysite.ru)

С чем это может буть связано и как с этим бороться?

По словам саппорта хостинга, это известная ошибка в php и решения этой проблемы нет (максимум - поставить путь к файлу от корня, но у меня он и так стоит).

Можно, конечно, делать чтение/запись файла во while() с проверкой результата, но, на мой взгляд, это изврат.

В общем, кто как читает/пишет локальные файлы, делитесь опытом...

Кстати, сервер (vds) сильно перегружен. Возможно, с этим связано?

freebsd 4.11, apache 1.3.33, php 4.4.0
 

tony2001

TeaM PHPClub
>По словам саппорта хостинга, это известная ошибка в php и решения этой проблемы нет
если известная ошибка, то пускай дадут ссылку на описание "известной ошибки".

а пока..
>freebsd 4.11
это известная древняя версия ОС, которая славится своими проблемами.
и решение этой проблемы - как минимум апдейт до современной версии.
 

v7

Guest
Автор оригинала: tony2001
>По словам саппорта хостинга, это известная ошибка в php и решения этой проблемы нет
если известная ошибка, то пускай дадут ссылку на описание "известной ошибки".

спрошу...

т.е. с такой проблемой Вы не сталкивались при написании скриптов?
 

tony2001

TeaM PHPClub
даже больше: на bugs.php.net я такой "известной проблемы" не помню.
 

confguru

ExAdmin
Команда форума
File(dir0/1.txt) is not within the allowed path(s): (/home/mysite.ru)

от корня это /home/mysite.ru/.....

P.S. Возможно и от перегрузки :)
 

Tor

Новичок
>freebsd 4.11
это известная древняя версия ОС, которая славится своими проблемами.
и решение этой проблемы - как минимум апдейт до современной версии.
эта "древняя ось" была выпущена в январе сего года
ты винХР (2001) считаешь еще более древним динозавром?

http://www.freebsd.org/releases/4.11R/announce.html
 

Dimush

Guest
v7, некогда была такая же проблема, в часы-пик возникали проблемы при работе с файлами, саппорт тогда ничего вразумительного не ответил, поэтому пришлось переехать.
Как вариант могу предположить, что проблема в лимите на максимальное количество открытых файлов либо для всего сервера, либо конкретно для твоего VDS.
 

v7

Guest
Автор оригинала: admin
File(dir0/1.txt) is not within the allowed path(s): (/home/mysite.ru)

от корня это /home/mysite.ru/.....
Да, путь в файле у меня указан полный:
/home/mysite.ru/htdocs/dir1/dir2/file1.txt

Сегодня продолжил избавление от этой проблемы.
Версия с перегрузкой отпала - регулярные глюки из-за open_basedir. Убедился в этом, когда закомментировал в httpd.conf строку с open_basedir, относящуюся к mysite.ru - ошибки сразу прекратились, раскомментировал - снова появились.
На нескольких форумах видел обсуждение подобной ошибки и пути решения, но мне ни один не помог.

Вот некоторые варианты решения при периодически появляющейся ошибке open_basedir(для потомков :) ):
1. Указать полный путь к файлу от корня: /home/mysite.ru/htdocs/dir1/file1.txt
2. Если есть доступ к httpd.conf, то в блоке, относящемся к сайту mysite.ru:
<VirtualHost ...>
ServerName mysite.ru
.......
</VirtualHost>
исправить строку
php_admin_value open_basedir /home/mysite.ru
на php_admin_value open_basedir .:/home/mysite.ru
или php_admin_value open_basedir /home/mysite.ru:.
или php_admin_value open_basedir /home/mysite.ru:.:..
3. Совершенно неправильный способ с точки зрения безопасности (ваши скрипты становятся доступны всем на этом сервере, кто работает под этим же Apache), но работающий - закомментировать в httpd.conf строку с open_basedir, относящуюся в вашему сайту:
# php_admin_value open_basedir /home/mysite.ru
4. Включить php как cgi

Саппорт хостинга, несмотря на желание помочь, справиться с проблемой не смог (предложили 4 вариант, но пока использую третий).

P.S. Всем спасибо за помощь.
 
Сверху