pytanie zadane 28 października 2017 w Programowanie przez użytkownika Gość

Chciałbym włączyć logowanie błędów PHP na serwerze, na którym mam zainstalowaną stronę. Strona jest w języku PHP+MySQL.

Z tym że nie chodzi mi o to, żeby błędy wyświetlały się bezpośrednio na stronie, tylko zapisywane były w pliku tekstowym. Tak żebym co jakiś czas sobie mógł sprawdzić, jakie są problemy ze skryptem.

1 odpowiedź

odpowiedź 28 października 2017 przez użytkownika
edycja 3 marca 2022 przez użytkownika

Aby sprawić, że w skrypcie będą wyświetlały się błędy interpretera PHP, lub komunikaty z błędami, musisz oczywiście włączyć to w ustawieniach samego serwera PHP. Można to w prosty sposób włączyć funkcją dostępną w PHP - error_reporting

Funkcję tą należy umieścić w pliku php.ini, który będzie miał taką postać:

error_reporting = E_ALL & ~E_NOTICE
error_log = /errors.log
log_errors = On

Powyższe linijki kodu włączają wszystkie błędy, które występują w czasie działania skryptu PHP i następnie zapisują je w pliku errors.log

Przykładowy błąd PHP, który znajdziemy w tym pliku:

[13-Sep-2017 16:50:00] PHP Notice:  Undefined offset:  0 in /home/w/plik.php on line 46
[13-Sep-2017 16:50:00] PHP Notice:  Undefined offset:  0 in  /home/w/plik.php on line 46
[13-Sep-2017 16:55:00] PHP Notice:  Undefined offset:  0 in  /home/w/plik.php on line 63
[13-Sep-2017 16:55:00] PHP Notice:  Undefined offset:  0 in  /home/w/plik.php on line 77

Oczywiście zakres błędów można ograniczyć do np. tylko krytycznych. Na powyższym przykładzie, wyświetlają się wszystkie błędy łącznie z tymi dopuszczalnymi.

Lista dostępnych parametrów dla funkcji error_reporting:

E_ERROR
E_WARNING
E_PARSE
E_NOTICE
E_CORE_ERROR
E_CORE_WARNING
E_COMPILE_ERROR
E_COMPILE_WARNING
E_USER_ERROR
E_USER_WARNING
E_USER_NOTICE
E_ALL
E_STRICT
E_RECOVERABLE_ERROR
E_DEPRECATED
E_USER_DEPRECATED


Oczywiście może się zdarzyć że Twój hosting nie obsługuje plików php.ini. Wtedy wyświetlanie błędów możesz włączyć po prostu w pliku index.php, który najczęściej znajduje się w głównym folderze serwera. Wystarczy w tym pliku dodać linijkę kodu:

error_reporting(E_ALL);

Dzięki czemu włączysz wyświetlanie wszystkich błędów PHP skryptu. Oczywiście w zakres błędów możesz zawęzić, używając parametrów z listy powyżej.
 

Jeśli natomiast chciałbyś wyłączyć wyświetlanie wszystkich błędów w PHP, musisz wstawić w nawias 0 (zero):

error_reporting(0);
komentarz 7 kwietnia 2020 przez użytkownika Gość
Niestety nie na każdym hostingu działa włączenie tych błędów. Może się zdarzyć że serwer tej funkcji nie obsługuje a administrator nie zezwala w ingerowanie w plik PHP.ini. często wtedy, gdy odpalimy skrypt z jakimś błędem wyskoczy po prostu błąd 500 bez szczegółowego wyjaśnienia co jest źle i jakiej linii.
komentarz 2 grudnia 2020 przez użytkownika Gość
Ja to bym zalecal wlaczac te wyswietlanie bledow tylkojak testujemy skrypt. Bo moze byc tak ze bedzie wszystko ok zero bledow, ale bedzie sie wyswietlac komunikat notice ktory jako tako nie jest bledem skrypt bedzie poprawnie dzialal, ale brzydko jak sie taki komunikat na stronie wyswietla.
komentarz 1 stycznia 2022 przez użytkownika Gość
Te pokazywanie błędów php na serwerze to dobra sprawa. Ułatwiła mi pracę nad instalacją jednego skryptu, który mi nie chciał zadziałaś na serwerze. Nie pojawiał się błąd więc trudno mi było zdiagnozować o co chodzi. Gdy dowiedziałem się jaki konkretnie jest błąd w składni php już jest ok
...