Исправление ошибки php с open_basedir «File() is not within the allowed path(s)»

С тех пор как убрал с VPS глючащий непонятно почему XCache (после какого-то обновления PHP он начал часто крашить сервер — причины так и не понял) и заменил его на eAccelerator (кстати заметил что чисто субъективно по скорости и стабильности он превосходит xcache) на некоторых сайтах начали появляться ошибки типа:

PHP Warning: require(): open_basedir restriction in effect. File() is not within the allowed path(s);PHP Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s);

Практически все советы в поиске гугля сводились к тому что необходимо выставить в настройках Apache директиву php_admin_value open_basedir "/home/user/site.net/:/:/tmp/" - мол после этого счастья привалит и все станет на свои места... Однако директива стояла изначально и проблем не было. Поэтому такой совет оказался для меня бесполезен.

Хорошо что в голове промелькнула мысль связать возникновение проблемы со сносом Xcache а еще точнее с установкой на сервер eAccelerator — решение нашлось чуть ли не мгновенно!

Оказалось что проблема была именно в исходниках Accelerator (в частности у меня была последняя на текущий момент версия — 0.9.6.1).

Качаем исходники после чего находим в файле eaccelerator.c строку 867:

if (php_check_open_basedir(realname TSRMLS_CC)) {

меняем на:

if (php_check_open_basedir(p->realfilename TSRMLS_CC)) {

Diff:

--- eaccelerator.c 2010-06-01 00:21:14.000000000 +0400+++ eaccelerator.c 2011-06-30 15:24:37.277788184 +0400@@ -8647 +8647 @@EACCELERATOR_PROTECT();if (p != NULL && p->op_array != NULL) {/* only restore file when open_basedir allows it */- if (php_check_open_basedir(realname TSRMLS_CC)) {+ if (php_check_open_basedir(p->realfilename TSRMLS_CC)) {return NULL;}EAG(class_entry) = NULL;

Ну и пересобираем eAccelerator:

phpize./configuremakemake testmake install

После рестарта сервера Apache проблема улетучилась :)


Оригинал статьи http://pingvinoff.net/2012/08/21/open_basedir-file-is-not-within-the-allowed-paths/

0 комментариев

Оставить комментарий