Intereting Posts
Нечеткие числа с добавлением микросов и с плавающей запятой в PHP WordPress: как создать форму пользовательского поиска только на определенной странице Арифметика даты в PHP MySQL: результат с несколькими строками Результат отдельной строки Throw Exception, сообщение, переданное в конструктор, не будет отображаться в PHP-ошибке как хранить конфигурации для приложения php – xml или ini или db Phalanger и php-библиотека для .net Проверьте тип файла загрузки из массива в PHP. Ошибки PHP на cronjob, отлично работает при подсказке PHP: Как очистить загруженные имена файлов? автоматическое заполнение текстового поля после нажатия клавиши ввода Как подавать данные серии, которые имеют значения оси х и y в линейных диаграммах? Как исправить тайм-аут соединения cURL SSL, который происходит только при первом вызове сценария Как связать имена пользователей Twitter с помощью PHP preg_replace? Предотвращение незанятого состояния при загрузке (веб-приложение на iOS)

Как я могу ограничить ограничение open_basedir PHP?

open_basedir ограничивает файлы, которые могут быть открыты PHP в дереве каталогов.

Я храню несколько библиотек классов и файлов конфигурации вне моего корневого каталога. Таким образом, веб-сервер не делает их общедоступными. Однако, когда я пытаюсь включить их из своего приложения, я получаю ошибку ограничения open_basedir следующим образом:

Warning: realpath () [function.realpath]: действующее ограничение open_basedir. Файл (/var/www/vhosts/domain.tld/zend/application) не входит в допустимые пути: (/var/www/vhosts/domain.tld/httpdocs:/tmp) в / var / www / vhosts / domain.tld / httpdocs / index.php в строке 5

Мой веб-корень здесь:

/var/www/vhosts/domain.tld/httpdocs 

Мои библиотеки и каталог конфигурации находятся здесь:

 /var/www/vhosts/domain.tld/zend 

Каким будет оптимальное решение для ограничения ограничения open_basedir, чтобы дерево каталогов в папке домена стало доступно моему приложению? У меня есть ряд доменов, с которыми я хочу это сделать, и я также явно опасаюсь создавать уязвимости безопасности.

Примечание. Я использую CentOS, Apache, Plesk, и у меня есть root ssh доступ к серверу. И хотя это не относится к Zend Framework напрямую, я использую его в этом экземпляре. Итак, вот включение из бутстрапа Zend:

 define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../zend/application/')); set_include_path(APPLICATION_PATH . '/../zend/library' . PATH_SEPARATOR . get_include_path()); 

Вы также можете сделать это легко на основе каждого каталога, используя файл конфигурации Apache (при условии, что это ваш веб-сервер) (например, httpd.conf)

 <Directory /var/www/vhosts/domain.tld/httpdocs> php_admin_value open_basedir "/var/www/vhosts/domain.tld/httpdocs:/var/www/vhosts/domain.tld/zend" </Directory> 

вы также можете полностью удалить ограничение с помощью

 <Directory /var/www/vhosts/domain.tld/httpdocs> php_admin_value open_basedir none </Directory> 

добавьте пути, необходимые для доступа к (/var/www/vhosts/domain.tld/zend) в вашу директиву open_basedir (вы можете указать несколько путей с помощью разделителя путей: «или»; »в окнах)

обратите внимание, что значения в open_basedir являются префиксами, что означает, что все, что находится под /var/www/vhosts/domain.tld/zend, будет доступно

В Parallels Plesk Panel (например, 1 и 1) вы можете сделать это в настройках панели PHP:

введите описание изображения здесь

Вот:

введите описание изображения здесь