Перейти к содержимому

Как отключить вывод ошибок php

  • автор:

Как отключить вывод PHP ошибок в WordPress

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

В этом уроке мы покажем, как можно скрыть и отключить отображение PHP ошибок на сайте WordPress.

Как отключить вывод PHP ошибок в WordPress

Когда и зачем отключать ошибки PHP на WordPress?

PHP ошибки, которые вы можете видеть вверху страницы сайта, как правило являются предупреждениями или уведомлениями. Это далеко не то же самое, что Internal Server Error, Syntax Error или Fatal Error, которые останавливают ваш полностью.

Предупреждения и уведомления — это разновидность ошибок, которые не останавливают работу и загрузку WordPress. Читайте более подробно в нашей статье: WordPress под капотом: Порядок загрузки функций и файлов WordPress сайта.

Как отключить вывод PHP ошибок в WordPress

Цель этих предупреждений — дать подсказки разработчику при отладке кода. Разработчики плагинов и тем используют эту полезную информацию в попытках исключить все баги и ошибки в финальной версии.

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

Как отключить вывод PHP ошибок в WordPress

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

Давайте посмотрим, как это можно сделать на WordPress.

Как отключить показ PHP ошибок в WordPress

Для выполнения этой задачи нам потребуется отредактировать файл wp-config.php .

Внутри файла wp-config.php, который лежит в корне вашего сайта, найдите строчку кода:

Вполне возможно, что значение этого параметра у вас установлено на FALSE, в таком случае вы найдете строчку с кодом:

В любом случае, вам нужно заменить эту строчку на следующий код:

Не забудьте сохранить изменения и загрузить файл wp-config.php обратно на сайт.

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

Как включить показ PHP ошибок в WordPress

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

Для этого снова откройте файл wp-config.php и замените код, который мы приводили выше, на этот:

Этот код даст команду WordPress отображать все виды PHP ошибок, предупреждений и ошибок снова.

Вывод ошибок в PHP

Ошибка

Нет кода без ошибок. Как говорят, на ошибках учатся. Ну, а мы сегодня научимся включать и отключать вывод ошибок в PHP.

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

Включить ошибки в PHP

Включение ошибок и предупреждений в php-скрипте

Для того, чтобы включить ошибки прямо в скрипте, перед выполняемым кодом напишите следующее:

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

Включение ошибок и предупреждений в файле .htaccess

Если у вас есть доступ к редактированию файла .htaccess, то пропишите в нём следующие строки:

После этого перезапустите Apache.

Включение ошибок и предупреждений в файле php.ini

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

После этого перезапустите PHP.

Автор блога Борис Заболотских Борис Заболотских

Здравствуй дорогой читатель! Я рад приветствовать тебя на страницах моего блога. Уже несколько лет я занимаюсь веб-программированием и рад поделиться с тобой своими знаниями и советами. Если тебе понравились мои статьи, ты можешь подписаться на рассылку блога, из неё ты узнаешь много интересного!

Как в PHP 8 показать все ошибки

По умолчанию в PHP 8 отключён показ ошибок, поэтому если во время выполнения PHP скрипта возникла проблема, то на экран ничего не будет выведено. Если ошибка в программе произошла до вывода HTML кода, то вы увидите белый экран веб-браузера.

Где настраивается вывод ошибок в PHP

Вывод ошибок настраивается в:

  • коде скрипта
  • .htaccess файле
  • в конфигурационном файле PHP (например, в php.ini)

Настройке в коде скрипта влияют на поведение только программы, в которую внесены настройки.

Настройки в файле .htaccess влияют на все скрипты, находящиеся в данной директории и поддиректориях.

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

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

Настройка вывода ошибок в PHP скрипте

Для вывода всех ошибок, добавьте в начало скрипта следующие строки:

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

Будут выведены предупреждения об использовании устаревших конструкций.

Настройка вывода ошибок в журналы веб-сервера выполняется отдельно.

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

Настройка вывода ошибок PHP в файле .htaccess

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

Чтобы они сработали, необходимо, чтобы на веб-сервере была включена поддержка файлов .htaccess.

Вывод ошибок в журнал веб-сервера выполняется следующей директивой:

Настройка вывода всех ошибок в файле php.ini

Файл php.ini — это конфигурационный файл PHP.

При своей работе PHP может использовать более одного конфигурационного файла.

Расположение файла php.ini:

  • В Debian и производных дистрибутивах (Ubuntu, Linux Mint, Kali Linux и прочих) зависит от версии PHP, например, для PHP 8.1 путь до файла следующий: /etc/php/8.1/apache2/php.ini
  • В Arch Linux и производных дистрибутивах (Manjaro, BlackArch и прочих): /etc/php/php.ini

В файле php.ini вы найдёте следующие директивы:

Для включения вывода ошибок замените их на:

По умолчанию значение error_reporting установлено на:

Это означает, что выводятся все ошибки, кроме предупреждений об устаревших конструкциях и предупреждения, вызванные строгой проверкой кода.

Чтобы выводить все ошибки и предупреждения, установите следующее значение:

  • E_ALL (Показать все ошибки, предупреждения и уведомления, включая стандарты написания кода.)
  • E_ALL &

Для того, чтобы изменения, сделанные в файле php.ini, вступили в силу, необходима перезагрузка веб-сервера.

  • В Debian и производных дистрибутивах (Ubuntu, Linux Mint, Kali Linux и прочих) это делается командой:
  • В Arch Linux и производных дистрибутивах (Manjaro, BlackArch и прочих) это делается командой:

Чтобы проверить, что настройки файла php.ini действительно применяются, создайте файл, например, с именем info.php и скопируйте в него:

Если вы создали файл в корневой папке веб-сервера, то в веб-браузере откройте адрес http://localhost/info.php.

На следующем скриншоте показано, что вывод ошибок отключён в файле php.ini:

На этом скриншоте видно, что вывод ошибок включён в файле php.ini:

Вывод ошибок в журнал веб-сервера

Настройка вывода ошибок в журнал веб-сервера настраивается в файле php.ini.

Для этого используется следующая директива:

Расположение файла с ошибка настраивается в конфигурации веб-сервера.

Директива «error_reporting('all');» и ошибка «Uncaught TypeError: error_reporting()»

При попытке использовать следующую конструкцию:

Вы столкнётесь с ошибкой Uncaught TypeError: error_reporting().

Полный лог ошибки:

Вместо 'all' вам нужно указать константу, выражающую уровень сообщения об ошибках. Допустимые значения провидены на этой страницы: https://www.php.net/manual/errorfunc.constants.php

Следующая запись является правильной для PHP 8 и означает показывать все ошибки, замечания и рекомендации:

Часто задаваемые вопросы

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

Параметр PHP display_errors

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

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

Имеется возможность самостоятельно установить значение параметра display_errors в значение Off (и обратно) для конкретного сайта в личном кабинете. Для этого в верхнем меню перейдите на страницу "Мои услуги" — "Активные услуги", выберите нужную услугу хостинга (если у вас их несколько), нажмите ссылку "изменить" напротив нужного сайта. В открывшемся окне выберите "Параметры PHP", измените соответствующий параметр, нажмите кнопку "Сохранить" и затем ссылку "выполнить".

выбор версии PHP

Изменить этот параметр можно также, добавив в файл .htaccess следующую строку:

Параметр PHP error_reporting

Параметр PHP error_reporting определяет, какие типы ошибок должны фиксироваться интерпретатором. Значение по умолчанию — 2037, что соответствует E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE 1 .

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

Мы не рекомендуем устанавливать параметр error_reporting в значение 0, поскольку это затруднит поиск проблемы (в случае ее возникновения).

Кроме этого вывод ошибок PHP может настраиваться во время выполнения PHP-скрипта функциями ini_set(), error_reporting(). Если вы используете одну из стандартных CMS, обратитесь к ее документации для изменения этих настроек на уровне CMS.

1 До 13.10.2022 значение параметра error_reporting на серверах виртуального хостинга было равно 2039.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Школа онлайн с государственным аттестатом