CityHost.UA
Помощь и поддержка

Hestia CP: Отключение функции open_basedir

При возникновении на сайте проблемы с загрузкой страниц связанных с функцией open_basedir, о чем свидетельствует ошибка open_basedir restriction in effect (может возникать как на страницах сайта, так и только в [логах ошибок] на сервере) можно отключить эту функцию.

 

Если коротко, функция open_basedir ограничивает доступ с php скриптов сайта к другим скриптам и каталогам, которые находятся за пределами сайта. Основное ее предназначение изолировать сайты друг от друга, чтобы каждый сайт "видел" только файлы/каталоги своей корневой директории, и не вмешивался в работу других сайтов/каталогов.

 

Данное руководство актуально только для панели управления Hestia, для других панелей или типов серверов она может быть не актуальна. Перед началом работ, убедитесь, что вы сделали [снапшот сервера]. Все операции производятся на страх и риск владельца сервера.

 

Следовательно, нужно в темплейт конфиг файле закомментировать строку, имеющую отношение к этой функции. Темплейт файлы располагаются по пути /usr/local/hestia/data/templates/web/php-fpm/ и имеют имена схожие с версиями PHP, для которых нужно отключить open_basedir. Для примера, темплейт для версии PHP 7.4 имеет название PHP-7_4.tpl

 

В данном файле есть строка php_admin_value[open_basedir] = ... наша цель его закомментировать, добавив символ точки с запятой в начало строки, чтобы получилось вот так ;php_admin_value[open_basedir] = ...

 

Для этого можете воспользоваться любым редактором файлов, например nano или vim, или выполните следующую команду, она найдет нужную строку и закомментирует ее. Обратите внимание на имя файла в команде, если у вас другая версия PHP, то не забудьте изменить имя файла, поскольку следующий пример предназначен для PHP 7.4.

sed -i 's/php_admin_value\[open_basedir\]/;php_admin_value\[open_basedir\]/g' /usr/local/hestia/data/templates/web/php-fpm/PHP-7_4.tpl

 

Осталось записать изменения с темплейта в основной конфиг сайта и перезагрузить службу PHP 7.4, все это можно сделать как вручную через панель управления и файлы панели, так можно выполнить всего одну команду. Обратите внимание, в команде есть 3 переменные, имя пользователя (admin) панели управления где размещается сайт, домен сайта (example.pp.ua), и название темплейта (PHP-7_4), который мы редактировали выше. Как и в случае выше, измените эти данные в соответствии со своими, прежде чем запускать команду.

v-change-web-domain-backend-tpl admin example.pp.ua PHP-7_4

 

Готово.

 

Теперь можно проверить, отключена ли функция с помощью [проверочного php скрипта phpinfo].

 

Вот как выглядит включенная функция open_basedir (первый скриншот) и когда она выключена (второй скриншот)