Быстрый способ показать все ошибки PHP

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

Быстрый способ показать все ошибки PHP

Добавление следующих строк в ваш PHP-код — самый быстрый способ показать все ошибки и предупреждения PHP.

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Вышеперечисленные функции и директивы работают следующим образом:

ini_set()

Функция ini_set пытается переопределить конфигурацию, содержащуюся в файле PHP .ini.

display_errors

display_errors — это директива, которая определяет, будут ли ошибки показаны пользователю или останутся скрытыми. Обычно ее следует отключать после разработки.

display_startup_errors

Директива display_startup_errors также используется для поиска ошибок, возникающих при запуске PHP. Это отдельная директива, потому что директива display_errors не обрабатывает такие ошибки.

К сожалению, директивы display_errors и display_startup_errors не показывают ошибки парсинга, такие как пропущенные точки с запятой или фигурные скобки. Для этого необходимо изменить конфигурацию PHP ini.

error_reporting()

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

Настройка PHP.ini для отображения всех ошибок и предупреждений

Если добавление вышеуказанных функций и директив не показывает все ошибки, в конфигурации PHP ini есть дополнительные директивы, которые можно изменить:

display_errors = on

Директива display_errors может быть установлена в значение on в файле PHP.ini. При этом будут отображаться все ошибки, включая синтаксические и ошибки разбора, которые не отображаются только при вызове функции ini_set в коде PHP.

Обратите внимание, что директива display_errors должна быть установлена в значение off, если приложение находится в процессе создания.

Файл PHP.ini можно найти в выводе функции phpinfo():

# php 7.x
<?php
    phpinfo();
?>

Загруженный файл конфигурации (Loaded Configuration File) показывает расположение файла PHP.ini.

Функция PHP error_reporting()

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

error_reporting(0);

Значение 0 следует передать функции error_reporting, чтобы удалить все ошибки, предупреждения, сообщения парсинга и уведомления.

error_reporting(E_NOTICE);

В PHP разрешено использовать переменные, даже если они не объявлены. Это не лучшая практика, так как необъявленные переменные вызывают проблемы при использовании в циклах и условиях. Необъявленные переменные отображаются в веб-приложении, когда в функции error_reporting передается E_NOTICE.

error_reporting(E_ALL & ~E_NOTICE);

Функция error_reporting позволяет разработчикам фильтровать, какие ошибки PHP могут быть показаны. Символ ~ означает «не» (not) или «нет» (no), поэтому параметр ~E_NOTICE означает не показывать уведомления. Символ & означает «верно для всех».

error_reporting(E_ALL);
error_reporting(-1);
ini_set('error_reporting', E_ALL);

Эти 3 строки кода делают одно и то же — они показывают все ошибки PHP. Наиболее часто используется error_reporting(E_ALL), так как он более читабелен.

Показ ошибок PHP через конфигурацию .htaccess

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

php_flag display_startup_errors on
php_flag display_errors on

В файле .htaccess есть директивы display_startup_errors и display_errors, аналогичные тем, что будут добавлены в PHP-код для отображения ошибок. Разработка и продакшен могут иметь разные файлы .htaccess, показывая или отключая сообщения об ошибках таким образом, при этом продакшен будет подавлять показ ошибок.

Директива display_errors в .htaccess или в файле PHP.ini может потребовать настройки в зависимости от того, какие файлы доступны и как выполняется развертывание и конфигурация сервера. Многие хостинг-провайдеры не разрешают вносить изменения в файл PHP.ini для включения display_errors.

Оригинал статьи
Опубликовано 20 ноября 2024 в 18:48
Обновлено 20 ноября 2024 в 18:48
Категория: Блог
Теги: