Rozdział 14 · 14.5
Ustawienia PHP dla poszczególnych katalogów i przez .htaccess
Czasami chcą Państwo, aby jeden katalog działał inaczej niż reszta witryny. Na przykład stary sklep internetowy w podkatalogu, który nie jest jeszcze gotowy na nową wersję PHP, albo jeden skrypt, który potrzebuje więcej pamięci. Można to osiągnąć za pomocą pliku .htaccess w danym katalogu. Nasze serwery działają na LiteSpeed, a LiteSpeed odczytuje reguły PHP w pliku .htaccess.
Uwaga: Błąd w pliku .htaccess może sprawić, że cała Państwa witryna (lub dany katalog) stanie się niedostępna i pojawi się błąd 500. Przed edycją należy zrobić kopię pliku i przetestować działanie strony zaraz po zapisaniu zmian. Informacje o tym, jak znaleźć i edytować plik .htaccess, znajdą Państwo w Pokazywanie i edycja ukrytych plików, takich jak .htaccess.
Zmiana opcji PHP dla jednego katalogu
W pliku .htaccess tego katalogu należy umieścić takie reguły:
php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value memory_limit 384M
php_value max_execution_time 300
Dla opcji, które są włączone lub wyłączone, należy użyć php_flag, na przykład php_flag display_errors off.
Reguły obowiązują dla danego katalogu i wszystkich katalogów znajdujących się w nim. Jeśli zostaną umieszczone w pliku .htaccess katalogu public_html, będą obowiązywać dla całej witryny.
Wskazówka: Chcą Państwo zmienić opcję dla całego pakietu? Lepiej zrobić to w Select PHP version (zob. Opcje PHP: upload_max_filesize, memory_limit i max_execution_time). Dzięki temu wszystkie ustawienia znajdują się w jednym miejscu i nie zapomną Państwo później, że w pliku .htaccess nadal znajdują się jakieś reguły.
Inna wersja PHP dla jednego katalogu
Cały Państwa pakiet korzysta z wersji wybranej w Select PHP version. Jeśli chcą Państwo przypisać inną wersję jednemu katalogowi (lub subdomenie, która również ma własny katalog), należy umieścić w pliku .htaccess tego katalogu:
<FilesMatch "\.(php)$">
SetHandler application/x-lsphp83
</FilesMatch>
Liczba po lsphp oznacza wersję bez kropki: 74 dla PHP 7.4, 82 dla PHP 8.2, 83 dla PHP 8.3, 84 dla PHP 8.4, i tak dalej. Mogą Państwo wybierać spośród tych samych wersji, co w Select PHP version.
Używają Państwo w tym katalogu rozszerzeń lub opcji, które odbiegają od standardowych? Są one powiązane z daną wersją. Należy wtedy tymczasowo wybrać tę wersję w Select PHP version, skonfigurować rozszerzenia i opcje, a następnie przywrócić poprzednią wersję dla całego pakietu. Ustawienia poszczególnych wersji pozostają zapisane.
Sprawdzanie, czy to działa
- W danym katalogu należy utworzyć plik info-test.php z jedną linijką: <?php echo PHP_VERSION, ' ', ini_get('memory_limit');
- Należy otworzyć go w przeglądarce, na przykład https://www.twojadomena.pl/starysklep/info-test.php. Zobaczą Państwo wersję PHP oraz przydzieloną pamięć.
- Zaraz po sprawdzeniu należy usunąć ten plik. Nie należy pozostawiać na stronie plików testowych zawierających informacje o serwerze.
Co nie działa?
- Własny plik php.ini umieszczony w katalogu nie przynosi żadnego efektu. Należy skorzystać z Select PHP version lub pliku .htaccess.
- disable_functions oraz open_basedir nie można zmienić przez plik .htaccess. Są one częścią zabezpieczeń serwera.
- Wartości ustawione w PHP Instellingen jako nadpisanie dla domeny (zob. PHP Instellingen w DirectAdmin a Select PHP version: jaka jest różnica?) mają pierwszeństwo przed ustawieniami z pliku .htaccess.
