Jak zobrazit chyby PHP a kde najít error_log
Co dělat, když web zobrazuje jen bílou stránku: jak dočasně zapnout výpis chyb PHP, kde najít soubor error_log a jak číst chybové hlášky.
3 minuty čtení 4 kroky
Obsah návodu
Když se místo webu zobrazí jen bílá stránka nebo hlášení „Došlo k závažné chybě“, PHP obvykle narazilo na chybu, kterou z bezpečnostních důvodů nezobrazuje návštěvníkům. Chybu ale najdete: buď si ji dočasně necháte vypsat na stránku, nebo ji vyhledáte v souboru error_log.
Dočasné zobrazení chyb na stránce
Nejrychlejší způsob je zapnout výpis chyb v souboru .user.ini (podrobně v návodu Jak nastavit limity PHP pomocí souboru .user.ini).
- Připojte se přes FTP a ve složce
webotevřete nebo vytvořte soubor.user.ini. - Přidejte řádky:
display_errors = On error_reporting = E_ALL - Soubor uložte, počkejte několik minut a stránku znovu načtěte. Chyba se vypíše i s názvem souboru a číslem řádku.
- Jakmile chybu vyřešíte, nastavte
display_errors = Offnebo řádky odstraňte.
Výpis chyb nikdy nenechávejte zapnutý trvale. Chybové hlášky prozrazují cesty k souborům, názvy tabulek a další informace, které mohou útočníkovi usnadnit práci.
Soubor error_log
PHP zapisuje chyby do souboru error_log, který vzniká ve složce, kde leží skript, jenž chybu způsobil. Nejčastěji ho tedy najdete přímo ve složce web, u WordPressu případně i ve složce wp-admin nebo ve složce konkrétního pluginu. Soubor otevřete v textovém editoru a podívejte se na poslední řádky. Každý záznam obsahuje datum, typ chyby, popis a cestu k souboru s číslem řádku.
Soubor error_log může časem narůst do velkých rozměrů. Po vyřešení problému ho můžete bez obav smazat, PHP si ho při další chybě vytvoří znovu.
Log chyb ve WordPressu
WordPress má vlastní ladicí režim. Do souboru wp-config.php vložte před řádek /* That's all, stop editing! */ tyto řádky:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Chyby se pak zapisují do souboru wp-content/debug.log a návštěvníkům se nezobrazují. Pokud je v souboru už řádek define( 'WP_DEBUG', false );, upravte ho místo přidávání nového. Po dokončení ladění vraťte WP_DEBUG na false.
Jak číst typické hlášky
| Hláška | Co znamená | Co s tím |
|---|---|---|
Fatal error: Uncaught Error: Call to undefined function |
Skript volá funkci, která v aktuální verzi PHP neexistuje nebo chybí rozšíření. | Aktualizujte plugin či aplikaci, případně viz Nejčastější problémy po změně verze PHP. |
Allowed memory size of … bytes exhausted |
Skriptu došla paměť. | Zvyšte memory_limit v .user.ini. |
Maximum execution time of … seconds exceeded |
Skript běžel příliš dlouho. | Zvyšte max_execution_time nebo rozdělte úlohu na menší části. |
Parse error: syntax error, unexpected … |
Chyba v zápisu kódu, často po ruční úpravě souboru. | Opravte soubor na uvedeném řádku nebo vraťte původní verzi. |
Warning / Notice / Deprecated |
Upozornění, web obvykle funguje dál. | Vyřešte při nejbližší aktualizaci, neblokuje provoz. |
Řešení problémů
- Stránka je stále bílá i po zapnutí display_errors. Chyba může nastat dříve, než se soubor
.user.ininačte, nebo ji zachytí aplikace. Podívejte se doerror_log. - Soubor error_log nikde nevidím. Zapněte ve FTP klientovi zobrazení skrytých souborů a projděte i podsložky. Pokud soubor neexistuje, PHP zatím žádnou chybu nezapsalo.
- Chybu nedokážu vyřešit. Zkopírujte přesné znění hlášky a pošlete je na podpora@datahost.cz společně s adresou stránky, kde se chyba objevuje.