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 (перший скриншот) та коли вона вимкнена (другий скриншот)