Konfigurace PHP direktiv
Chování PHP lze ovlivňovat pomocí tzv. PHP direktiv. Základní konfigurace je uložena v systémovém souboru php.ini, který spravuje poskytovatel hostingu. Uživatelé však mohou některé parametry upravit také sami – pomocí souborů .htaccess (Apache) nebo .user.ini (PHP-FPM).
Jak poznat, který soubor použít?
- Máte možnost měnit PHP verzi → použijte
.user.ini. - Server nepodporuje změnu PHP verze (starší hostingy) → použijte
.htaccess.
Jak vytvořit konfigurační soubor
Soubor .htaccess nebo .user.ini vytvoříte v libovolném textovém editoru a nahrajete do složky public_html na FTP.
Struktura konfiguračních souborů
.htaccess
# Komentáře začínají křížkem
php_flag display_errors On
php_flag log_errors On
php_value error_log /home/uzivatel/domains/vasedomena.cz/public_html/php-error.log
# Absolutní cestu zjistíte pomocí phpinfo() nebo getcwd()
.user.ini
; Komentáře začínají středníkem
display_errors = On
log_errors = On
error_log = "/home/uzivatel/domains/vasedomena.cz/public_html/php-error.log"
; Absolutní cestu zjistíte pomocí phpinfo() nebo getcwd()
Co nemůžete měnit
Některé hodnoty lze měnit pouze na úrovni serveru (administrátorem). Mezi ty, které obvykle nelze měnit v .htaccess ani v user.ini, patří:
upload_max_filesizepost_max_sizememory_limitmax_execution_timemax_input_time
Pokud potřebujete jejich úpravu, lze požádat poskytovatele hostingu.
Zapnutí výpisu chyb a logování
Ukázka v .htaccess
# Zobrazení chyb
php_flag display_errors On
# Logování chyb
php_flag log_errors On
# Cesta k logu
php_value error_log /absolute/cesta/php-error.log
Ukázka v .user.ini
display_errors = On
log_errors = On
error_log = "/home/uzivatel/domains/vasedomena.cz/public_html/php-error.log"
Poznámka: U PHP-FPM se změny projeví obvykle do 5 minut.
Aktivace reportingu chyb (error_reporting)
Ukázka v .htaccess
Zapnutí všech chyb
php_value error_reporting -1
php_flag display_errors On
Zapnutí všech chyb kromě upozornění
php_value error_reporting E_ALL & ~E_NOTICE
php_flag display_errors On
Vypnutí chyb na stránce (produkce)
php_flag display_errors Off
php_value log_errors On
php_value error_log "/absolute/cesta/_php_errors.log"
Poznámka: Pokud se objeví 500 Internal Server Error, server pravděpodobně blokuje php_flag a php_value. V takovém případě použijte user.ini.
Ukázka v .user.ini
Zapnutí všech chyb
error_reporting = -1
display_errors = On
Zapnutí všech chyb kromě E_NOTICE
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
Vypnutí chyb na stránce (produkce)
display_errors = Off
log_errors = On
error_log = "/absolute/cesta/_php_errors.log"
phpinfo() — Jak ověřit aktuální konfiguraci PHP
Pro zobrazení kompletní konfigurace vytvoře soubor phpinfo.php:
<?php
phpinfo();
?>
Soubor poté otevřete v prohlížeči a po dokončení testů jej smažte.
Jak zjistit absolutní cestu k Document Root
<?php
echo "DocumentRoot: " . $_SERVER['CONTEXT_DOCUMENT_ROOT'];
?>
Bezpečnostní upozornění
- Na produkci vždy vypněte výpis chyb (
display_errors = Off). - Chyby logujte pomocí
error_log. - Po testování smažte diagnostické soubory jako
phpinfo.php.