Archiv pro štítek: LAMP

Apache – nastavujeme zobrazování chyb

Na své distribuci Ubuntu jsem se rozhodl zprovoznit lokální webový a databázový server. Vznikla mi tak oblíbená kombinace označovaná jako LAMP (Linux, Apache, MySQL, PHP). Mohl jsem proto začít vytvářet dynamické stránky bez nutnosti nahrávat vždy soubory přes FTP na hosting. Úspora času je značná a není dále třeba věnovat pozornost tomu, jaké soubory po úpravě kódu aktualizovat na vzdálené straně. Po defaultní instalaci s minimem nastavení jsem si však všiml, že mi lokální Apache neukazuje chyby v PHP. Namísto toho jsem obdržel informaci o problému na straně serveru. Taková konfigurace se hodí pro skutečné nasazení, protože případný útočník nezjistí podrobnosti, které by mu mohly pomoci v jeho nežádoucí činnosti. Během programování však absence chybových hlášení zabolí.

Hledáme php.ini

Ke změně chování Apache musíme provést obměnu v souboru php.ini. Jeho umístění se však může lišit dle verze či distribuce. Poradím vám proto univerzální způsob. Vytvořte si nový PHP skript a napište do něj:

<?php
phpinfo();
?>

Následně jej načtěte ve webovém prohlížeči (např. 127.0.0.1/info.php). Zde nás zajímá položka Configuration File (php.ini) Path. V mém případě se tedy daný soubor nachází v /etc/php5/apache2/php.ini. K jeho otevření použijte libovolný editor. Nemáte-li práva zápisu, spusťte program jako root. Já například do terminálu zadal gksudo gedit. Nyní na vás čeká mnoho komentářů a dostupných voleb. My však hledáme display_errors, kde zadáme On. Nyní restartujeme Apache s pomocí příkazu sudo /etc/init.d/apache2 restart.

 

php.ini

Pokročilejší nastavení

Uvedený postup v mém případě postačil k tomu, aby server začal zobrazovat nedostatky v syntaxi. S php.ini si navíc můžete určit, o jakých problémech chcete být vlastně informováni. Tuto vlastnost řeší direktiva error_reporting. Zpravidla se zde používá konstanta E_ALL zaručující výpis nejen všech chyb, ale i varování.