[PHP] Jak wyłączyć pokazywanie komunikatów o błędach w skryptach PHP?
Chcesz wyłączyć w skryptach PHP pokazywanie komunikatów o błędach, które standardowo wypisywane są na stronie WWW. Takie rozwiązanie jest przydatne, jeżeli Twoje skrypty nie są odporny na błędne dane (np. podawane przez użytkownika) i nie masz własnej obsługi błędów. Z drugiej strony - musisz takie błędy gdzieś zapisywać, bo to, że nikt ich nie widzi, nie znaczy, że ich nie ma i o problemie można zapomnieć...
Błędy mogą zdarzyć się bardzo często, np. gdy brakuje pliku, dzielisz przez zero, baza danych zwróciła puste dane. Pokazanie błędu na stronie WWW jest nie tylko mało estetyczne, ale czasem niebezpieczne - ktoś zobaczy ścieżki dostępu do plików i może starać się je odczytać dane, do których dostępu nie powinien mieć.
PHP pozwala na pełną kontrolę wyświetlania błędów. Jeżeli nie chcesz aby pokazywały się one na stronie WWW, skorzystaj z następujących ustawień w pliku konfiguracyjnym php.ini
display_errors = Off
log_errors = On
error_log = /home/httpd/www/logs/bledyphp.txt
Znajdź w pliku php.ini sekcję zatytułowaną "Error handling and logging" i wyłącz wyświetlanie błędów, natomiast włącz zapisywanie ich do pliku i podaj nazwę pliku, do którego będą logowane wszystkie błędy.
Dzięki temu użytkownicy ich nie zauważą, a Ty będziesz mieć wygodny raport na temat błędów w jednym pliku, który wystarczy cos jakiś czas sprawdzać. Pamiętaj aby poprawiać skrypty tak, aby błędów generowały jak najmniej...
Kolejny dobry było do zastosowania w pojedynczych funkcjach to zastosowanie znaku małpy przed funkcją w skrypcie PHP, np.:
<?
function dziel($a,$b) {
return $a/$b;
}
echo @dziel(10,0);
?>
Gdyby nie małpka, zobaczylibyśmy komunikat "Warning: Division by zero...", bo oczywiście dzielenie przez zero jest błędem, a funkcja nie jest zabezpieczona przed podaniem zera.
Dzięki małpie nie zobaczymy komunikatu o błędzie (lub ostrzeżeniu). Najwyżej reszta skryptu nie zadziała prawidłowo.
Jeżeli zamiast zera podamy poprawną liczbę, zobaczymy prawidłowy wynik.