Przy okazji instalacji PEAR i trochę później przy konfiguracji pisałem o modyfikowaniu ustawień konfiguracyjnych dla poszczególnych domen przy wykorzystaniu pliku vhost.conf. Tak się składa, że na serwerze w lokalizacji /var/www/vhosts/ oprócz typowych katalogów domen wyklikanych z poziomu Plesk, jest również katalog o nazwie default. Po wpisaniu w przeglądarce nazwy hosta serwera, serwowana jest zawartość tego katalogu, a konkretnie zawartość default/htdocs (przy połączeniu nieszyfrowanym). Wszystko działa tutaj zwyczajnie normalnie, poza tym, że nie działa tutaj już ten trik 😉 z plikiem conf/vhosts.conf. Tzn. działa, ale przy każdym upgradzie i innym przeładowaniu konfiguracji Plesk generuje automatycznie nowy plik, który już nie pobiera treści z pliku conf/vhosts.conf.
Gdy zajdzie taka potrzeba by np. wyłączyć tryb safe_mode, akurat dla tej domyślnej pozostawiając domyślnie (w pliki php.ini) go włączonym należy przejść do lokalizacji:
/etc/httpd/conf.d/ i odnaleźć tam plik zz010_psa_httpd.conf lub podobny. Nazwa może nieco się różnić głównie ze względu na zainstalowaną wersję Plesk (może to być zz009)… itp.). Z moich notatek wynika, że prawdopodobnie w wersjach wcześniejszych struktura tego pliku była podobna do typowego *httpd.include. Tam wystarczyło w odpowiednim miejscu dodać php_admin_flag safe_mode off lub zaincludować przygotowany plik vhost.conf.
Natomiast dla wersji Plesk 10+ plik ma mniej więcej taką postać:
cat /etc/httpd/conf.d/zz010_psa_httpd.conf # ATTENTION! # DO NOT MODIFY THIS FILE OR ANY PART OF IT. THIS CAN RESULT IN IMPROPER PLESK # FUNCTIONING OR FAILURE, CAUSE DAMAGE AND LOSS OF DATA. Include '/usr/local/psa/admin/conf/generated/12990884850.71565400_server.include' Include '/usr/local/psa/admin/conf/generated/12990884850.71565400_atmail.include' Include '/usr/local/psa/admin/conf/generated/12990884850.71565400_horde.include'
Stąd znana jest nazwa pliku konfiguracyjnego i można przejść do jego edycji:
vi /usr/local/psa/admin/conf/generated/12990884850.71565400_server.include
Tutaj już trzeba w odpowiednim miejscu dopisać php_admin_flag safe_mode off lub po prostu dołączyć wcześniej przygotowany plik vhosts.conf w miejscu między znacznikami VirtualHost (tu np. dla połączenia nieszyfrowanego na porcie 80)
<VirtualHost \ XX.XX.XX.XX:80 \ > ... Include "/var/www/vhosts/default/conf/vhost.conf*" </VirtualHost>
a plik ten ma następującą treść:
cat /var/www/vhosts/default/conf/vhost.conf <Directory /var/www/vhosts/default/htdocs> php_admin_value open_basedir /var/www/vhosts/default/htdocs/:/tmp/:/usr/share/pear/ php_admin_flag safe_mode off </Directory>
Po zapisaniu wystarczy tylko zrestartować usługę Apache (bez przeładowywania pliku konfiguracyjnego)
service httpd restart
i można się cieszyć wyłączonym trybem safe_mode, oczywiście do czasu następnej aktualizacji Pleska bądź innego tego typu akcji 😉
We wszystkich tych plikach pojawia się zawsze informacja w nagłówku, żeby przypadkiem nie modyfikować tych plików pod groźbą zepsucia serwera, tak więc trzeba być czujnym! Gdyby jednak coś się zepsuło i przestało działać a serwer Apache nie chciał się zrestartować, wówczas pozostaje tylko przeładowanie pliku konfiguracyjnego.
/usr/local/psa/admin/sbin/websrvmng -u --vhost-name=nazwa-ho.sta.net
Powyższą komendę proszę wywoływać tylko w sytuacji ostatecznej. Po tym nowy plik zostanie wygenerowany i trzeba będzie wszystko zaczynać od początku.
Rozwiązanie to może nie jest najlepsze, ale doraźnie działa. Jedyne utrudnienie to to, że trzeba o tym pamiętać przy okazji każdego upgrade.
Jeśli ktoś czytający to zna na to lepsze rozwiązanie, to wdzięczny będę za pozostawienie informacji w komentarzu.