Как отображать ошибки PHP и включить отчеты об ошибках

Как отображать ошибки PHP и включить отчеты об ошибках

Если вы погуглите "ошибки PHP", одним из первых результатов, которые вы увидите, будет ссылка на документацию по функции error_reporting.

Эта функция позволяет вам как установить уровень отчетов об ошибках PHP, когда ваш скрипт PHP (или набор скриптов) работает, так и получить текущий уровень отчетов об ошибках PHP, как определено в конфигурацией PHP.

Функция error_reporting принимает единственный параметр, целое число, которое указывает, какой уровень отчетности установить.  Если ничего не передавать в качестве параметра, тогда функция  error_reporting просто возвращается текущий установленный уровень.

Существует длинный список возможных значений, которые вы можете передать в качестве параметра, но мы рассмотрим их позже.

На данный момент важно знать, что каждое возможное значение также существует как предопределенная константа PHP. Так, например, константа E_ERROR имеет значение 1. Это означает, что вы можете передать 1 или E_ERROR функции error_reporting и получить одинаковый результат.

В качестве быстрого примера, если мы создадим файл php_error_test.php, мы сможем увидеть текущий установленный уровень сообщения об ошибках, а также установить его на новый уровень.

 

Настройка отображения ошибок в PHP

Использовать функции error_reporting таким образом удобно, когда вы просто хотите увидеть любые ошибки, связанные с фрагментом кода, над которым вы сейчас работаете.

Но было бы лучше контролировать, о каких ошибках сообщается в вашей локальной среде разработки, и регистрировать их где-нибудь в логическом месте, чтобы иметь возможность просматривать во время написания кода. Это можно сделать внутри файла инициализации PHP (или php.ini).

Файл php.ini отвечает за настройку всех аспектов поведения PHP. В нем вы можете установить такие вещи, как объем памяти, который следует выделить для сценариев PHP, разрешить загрузку файлов и какие уровни error_reporting следует установить.

Если вы не уверены, где находится ваш файл php.ini, один из способов узнать это - вызвать функцию phpinfo. Эта функция выведет всю информацию, относящуюся к вашему установленному PHP.


Как вы можете видеть из моего phpinfo, мой текущий файл php.ini находится в /etc/php/7.3/apache2/php.ini.

Найдя файл php.ini, откройте его в любом редакторе и найдите раздел «Error handling and logging». Вот где начинается самое интересное!

 

Error reporting директивы

Первое, что вы увидите в этом разделе, - это раздел комментариев, который включает подробное описание всех констант уровней ошибок. Это замечательно, потому что вы будете использовать их позже, чтобы установить уровни отчетов об ошибках.

; Common Values:
;   E_ALL (Show all errors, warnings and notices including coding standards.)
;   E_ALL & ~E_NOTICE  (Show all errors, except for notices)
;   E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT

Наконец, после всех комментариев указано текущее значение вашего уровня error_reporting. Для локальной разработки я бы предложил установить его на E_ALL, чтобы видеть все ошибки.

Обычно это одна из первых вещей, которые я задаю, когда настраиваю новое окружение. Таким образом я увижу все сообщения об ошибках.

error_reporting = E_ALL

Директива display_errors позволяет вам переключать, выводит ли PHP ошибки или нет. Обычно у меня установлено значение «On.», Поэтому я могу видеть ошибки по мере их возникновения.

Параметр display_startup_errors позволяет включить / выключить такое же переключение ошибок, которое может возникнуть во время последовательности запуска PHP. Обычно это ошибки в конфигурации вашего PHP или веб-сервера, а не конкретно в вашем коде. Рекомендуется оставить этот параметр выключенным, если вы не устраняете проблему и не уверены, что ее вызывает.

Директива log_errors сообщает PHP, нужно ли записывать ошибки в файл журнала ошибок. По умолчанию он всегда включен и рекомендуется.

 

Кастомный журнал ошибок для Apache

 

 

 

  • share:
Комментарии 0

Оставить комментарий


Комментарии могут оставлять только зарегистрированные пользователи

shape shape