Logowanie błędów w PHP

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Logowanie błędów w PHP polega na zapisywaniu informacji o błędach działania skryptu do pliku dziennika, czyli logu. Jest to szczególnie ważne na serwerze produkcyjnym, gdzie błędy nie powinny być wyświetlane użytkownikowi w przeglądarce.

W pytaniach egzaminacyjnych należy pamiętać: błędy PHP są rejestrowane w logu, ale tylko wtedy, gdy odpowiednie ustawienia są włączone w konfiguracji PHP, najczęściej w pliku php.ini.

Najważniejsze dyrektywy w php.ini

log_errors = On
error_log = /var/log/php_errors.log
display_errors = Off
error_reporting = E_ALL

Znaczenie ustawień:
- log_errors = On - włącza zapisywanie błędów do logu,
- error_log - określa miejsce zapisu błędów,
- display_errors = Off - wyłącza pokazywanie błędów użytkownikowi,
- error_reporting = E_ALL - określa poziom raportowania błędów.

Logowanie a wyświetlanie błędów

Logowanie błędów nie jest tym samym co ich wyświetlanie. Błąd może zostać zapisany w logu, ale nie pojawić się na stronie. Jest to zalecane rozwiązanie w gotowych aplikacjach internetowych, ponieważ komunikaty błędów mogą ujawniać strukturę plików, zapytania SQL lub inne dane techniczne.

Przykład w kodzie PHP

error_reporting(E_ALL);
ini_set('log_errors', '1');
ini_set('display_errors', '0');
ini_set('error_log', 'php_errors.log');

Takie ustawienia powodują, że błędy są zapisywane do pliku php_errors.log, ale nie są pokazywane użytkownikowi.