Как обрабатывать все ошибки PHP

Как обрабатывать все ошибки PHP

18 февраля 2023 г.

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

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

Показать все ошибки PHP

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

Теперь давайте объясним, что означают эти строки в обычном тексте

функция ini_set

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

Итак, как вы можете использовать это? Если вы хотите отобразить ошибки, просто передайте значение 1, а чтобы скрыть ошибки, передайте значение 0.

ini_set('display_errors', 1); //display errors 
ini_set('display_errors', 0); //hide errors

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

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

Если вы не видите ошибок после использования ini_set для отображения ошибок, не волнуйтесь, вы все равно можете сделать это, перейдя в файл PHP.ini

Как найти файл PHP.ini

Если вы используете xampp, вы можете найти файл PHP.ini, выполнив следующие действия.

  • Откройте каталог, в который вы установили xampp.
  • Найдите папку с именем PHP
  • В папке PHP вы можете прокрутить вниз или использовать параметр поиска, чтобы найти файл php.ini.

Включить отображение ошибок в файле PHP.ini

Если вы успешно нашли файл PHP.ini, все, что нам нужно сделать, это открыть файл в текстовом редакторе и найти display_errors, а затем изменить его значение на on .

display_errors = on

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

Отображение ошибок PHP с помощью конфигурации .htaccess

Вы также можете включить или отключить режим ошибок с помощью файла .htaccess, расположенного в корневом или общем каталоге проекта

php_flag display_startup_errors on 
php_flag display_errors on

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

В файле .htaccess также можно включить собственный журнал ошибок, если папка журнала или файл журнала доступны для записи веб-сервером. Файл журнала может быть относительным путем к месту расположения .htaccess или абсолютным путем, например /var/www/html/website/public/logs

.

php_value error_log logs/all_errors.log

Предупреждения и уведомления PHP

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

error_reporting(E_WARNING);

Скрыть и показать предупреждение так же просто, как добавить одну строку кода. Для отображения предупреждений и уведомлений параметром функции сообщения об ошибках будет E_WARNING | E_NOTICE.

Функция error_reporting также может принимать параметры E_ERROR и E_PARSE в качестве побитовых операторов. Чтобы сообщать обо всех ошибках, кроме уведомлений, параметр E_ALL & ~E_NOTICE, где E_ALL обозначает все возможные параметры функции сообщения об ошибках.

error_reporting(0);

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

error_reporting(E_NOTICE);

PHP позволяет использовать переменные, даже если они не объявлены. Это не является стандартной практикой, поскольку необъявленные переменные вызовут проблемы для приложения после их использования в циклах и условиях.

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

error_reporting(E_ALL & ~E_NOTICE);

Функция отчетов об ошибках позволяет вам фильтровать, какие ошибки могут отображаться. Символ «~» означает «примечание», поэтому параметр ~E_NOTICE означает не показывать уведомления. Обратите внимание на «&» и «|» символов между возможными параметрами. «&» означает «истинно для всех», а символ «|» представляет любой из них, если он истинен. Эти два символа имеют одинаковое значение в PHP-условиях ИЛИ и И.

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

Спасибо!


Также опубликовано здесь


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE