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.