Jak wyłączyć funkcję open_basedir w Hestia CP

2 października, 2023

Jeśli ładowanie stron na stronie internetowej wiąże się z problemami związanymi z open_basedir, można wyłączyć tę funkcję. O tym świadczy błąd open_basedir restriction in effect, który pojawia się w [logach błędów] na serwerze lub na stronach witryny.  

Istota open_basedir polega na ograniczeniu dostępu skryptów PHP witryny do innych katalogów i skryptów umieszczonych poza jej granicami. Głównym celem funkcji jest izolacja witryn, aby każda z nich mogła wyodrębnić pliki lub katalogi swojej głównej katalogu bez ingerencji w podobne systemy innych witryn.  

Aktualność poniższego algorytmu zachowuje się dla panelu Hestia. Zanim użytkownik zacznie pracę, powinien upewnić się, że przeprowadzono [snapshot serwera], ponieważ odpowiedzialność za proces spoczywa na właścicielu serwera. Algorytm działań jest następujący:

  1. Zakomentowanie linii odnoszącej się do wskazanej funkcji w pliku konfiguracyjnym szablonu. Lokalizację plików szablonów można znaleźć pod ścieżką /usr/local/hestia/data/templates/web/php-fpm/. Ich nazwy są podobne do nazw wersji PHP. Na przykład, dla wersji 7.4 przewidziano szablon o nazwie PHP-7_4.tpl.  Należy zakomentować linię php_admin_value[open_basedir] = . Na początku linii dodaje się znak średnika w postaci ;php_admin_value[open_basedir] = … Wykonanie tego zadania można przeprowadzić w dowolnym edytorze plików — na przykład vim lub nano. Pomoże w tym polecenie 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. Należy zwrócić uwagę na nazwę pliku: musi odpowiadać pożądanej wersji PHP. Użytkownik powinien zmienić nazwę zgodnie z potrzebą. 
  2. Wprowadzenie zmian w głównej konfiguracji witryny i ponowne uruchomienie usługi PHP. Działania wykonuje się ręcznie za pomocą panelu sterowania lub za pomocą polecenia v-change-web-domain-backend-tpl admin example.pp.ua PHP-7_4. W podanej linii są trzy zmienne: nazwa użytkownika, domena witryny i nazwa szablonu — odpowiednio admin, example.pp.ua, PHP-7_4. Użytkownik zmienia podane dane według własnych potrzeb przed uruchomieniem polecenia.
  3. Sprawdzić wyłączenie funkcji. 

Ostatni etap przeprowadza się z zastosowaniem skryptu phpinfo.