PHP сообщает об ошибках в ответ на некоторые внутренние ошибочные обстоятельства. Они могут быть использованы для уведомления о разных состояниях, а также могут выводиться на экран и записываться в логи по желанию.
Каждая ошибка, генерируемая PHP, обязательно содержит информацию о своём типе. В этом списке перечислены все типы ошибок, а также описания их поведений и провоцирующие их причины.
PHP, по умолчанию, может обрабатывать любые ошибки в соответствии со своей конфигурацией, если обработчик ошибок не установлен. О каких ошибках сообщать и какие ошибки игнорировать указывается в параметре error_reporting
конфигурации php.ini, или во время исполнения программы с помощью вызова error_reporting(). Настоятельно рекомендуется заранее конфигурировать php.ini, так как некоторые ошибки могут произойти до начала выполнения вашего скрипта.
На стадии разработки, обязательно настройте параметр error_reporting
на значение E_ALL
, так как вам необходимо знать обо всех ошибках для их решения на этой стадии. Когда продукт готов, вы можете изменить значение на менее подробное, вроде E_ALL & ~E_NOTICE & ~E_DEPRECATED
, но во многих случаях значение E_ALL
также желательно, так как оно может предупреждать заранее о других возможных ошибках.
Дальнейшая работа PHP с появившимися ошибками зависит от двух других параметров в php.ini. Параметр display_errors
определяет, включать ли данные ошибки в вывод скрипта или нет. Когда продукт готов, обязательно выключите этот параметр, так как в описании ошибки может содержаться конфиденциальная информация, вроде паролей базы данных. Во время разработки данный параметр лучше включить для решения проблем, провоцирующих ошибки.
Кроме отображения ошибок, их можно записывать в лог с помощью включённого параметра log_errors
. Файл лога указывается в параметре error_log
. Данная функция незаменима на стадии конечного продукта, так как позволяет видеть информацию об ошибках и составлять основанные на них отчёты вдали от глаз пользователя.
Если вас не устраивает работа предустановленного обработчика ошибок, вы также можете обрабатывать множество видов ошибки с помощью своего обработчика, который можно установить вызовом функции set_error_handler(). Некоторые ошибки не могут обрабатываться пользовательским обработчиком, но те, которые могут, обрабатываются по вашему желанию: например, ваш скрипт может выдавать пользователю любую отдельную страницу ошибки, а подробную информацию записывать в лог или отсылать по почте.