Отображение ошибок PHP, подключение и отключение их вывода на экран
Работая над своими сайтами, любой разработчик рано или поздно сталкивается с так называемым белым экраном смерти — свидетельством появления ошибок в PHP-коде. Подобная ситуация может возникать по различным причинам — как по вине разработчика, так и из-за некорректно работающего программного обеспечения. Но чаще всего причиной является изменение кода или использование новых модулей.
Самый простой способ вернуть сайту работоспособность — это откат изменений, среди которых может скрываться причина сбоя работы. При этом в будущем вам все равно придется искать ошибку и исправлять ее.
Наиболее очевидной возможностью ее обнаружения является просмотр лога веб-сервера, только не все хостеры ведут такие логи, да и сам просмотр является достаточно трудоемким занятием. Так что отображение ошибок PHP на экране способно облегчить вам задачу, и активировать эту функцию можно по-разному.
4 способа включить отображение ошибок PHP
Давайте рассмотрим четыре наиболее удобных и популярных варианта решения проблемы:
- Редактируем php.ini — отображение ошибок на всех сайтах
При наличии доступа к серверу вам может помочь редактирование файла php.ini. Найдите в нем нужные строки и привести их к представленному ниже виду:
Редактируя php.ini включить отображение ошибок несложно, но при этом стоит учитывать, что внесенные в него правки коснутся всех ваших веб-ресурсов, размещенных на этом сервере.
- Показ ошибок при помощи изменений в index.php
Также можно внести изменения в index.php. Приведенный ниже код нужно разместить до строки с bootstrap.ini:
- Редактирование .htaccess — отображение ошибок PHP
Этот способ более популярен и удобен. Вам нужно найти файл .htaccess и добавить в него указанные ниже строки:
php_flag display_errors on
php_flag display_startup_errors on
В результате все существующие ошибки будут выведены на экране.
- Демонстрация ошибок путем внесения правок в сам скрипт
Для этого в скрипт нужно вставить такие строки:
Этот вариант не подходит для тех случаев, когда ошибка представляет собой не проставленные в нужных местах скобки или знак «;», которые также приводят к появлению белого экрана. Парсинг скрипта на синтаксическую корректность необходимо проводить до его запуска и установки директив, и для исправления этого просто внесите еще одно изменение:
Как выключить показ ошибок PHP?
После того, как внесены необходимые правки, вам наверняка понадобится отключить отображение ошибок PHP. Сделать это просто: достаточно вернуть измененному вами файлу или скрипту первоначальный вид, удалив внесенные вами изменения.
Если же у вас возникли проблемы? Не удалось включить отображение ошибок в php.ini на выделенном сервере в России или же вы не знаете, как удалить внесенные вами правки? Обратитесь за помощью к нашим специалистам. Оперативная круглосуточная техподдержка ответит на все ваши вопросы и поможет найти выход из любой ситуации.
Разработка сайтов с RigWEB — удобное, интересное и безопасное занятие, ведь мы всегда готовы вам помочь!
Как вывести ошибки PHP на экран
При отладке скриптов на PHP обычное дело заполучить в браузере «белый экран». Что в большинстве случаев говорит об остановке выполнения PHP кода из-за ошибки. PHP интерпретатор позволяет выводить служебную информацию об ошибках на экран, что существенно облегчает отладку. Но по-умолчанию (в большинстве случаев) такое поведение из соображений безопасности отключено, то есть сообщения об ошибках PHP на экран не выводятся.
В этой статье я расскажу как заставить PHP выводить сообщения об ошибках на экран монитора в окне браузера. Инструкция справедлива для случая когда вы используете веб сервер Apache и если PHP для Вашего сайта подключен как модуль Apache.
Вывод ошибок на экран следует включать только во время отладки сайта. Наличие такого кода может негативно сказаться на безопасности веб-приложения.
Включение вывода ошибок PHP на экран с помощью файла .htaccess
Это очень удобный способ для отладки PHP кода. Работает практически во всех случаях. В папку со скриптом на сайте помещаем файл .htaccess со следующим содержимым:
php_flag display_errors on php_flag display_startup_errors on php_flag error_reporting E_ALL
- display_errors — включает опцию для вывода ошибок на экран вместе с остальным кодом.
- display_startup_errors — включает опцию вывода ошибок, возникающих при запуске PHP, когда еще не работает директива display_errors.
- error_reporting — указывает, какие ошибки выводятся по уровню значимости. При значении директивы E_ALL отображаются все ошибки.
Включение вывода ошибок PHP на экран в коде файла PHP
Этот способ удобен тем, что выводом ошибок на экран вы управляете в самом скрипте PHP. Параметры, заданные с помощью функции ini_set(), имеют более высокий приоритет и перекрывают директивы php.ini и .htaccess. Разместите следующий код в начале PHP файла:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); ini_set('error_reporting', E_ALL);
Включение вывода ошибок PHP на экран с помощью файла php.ini
Этот способ актуален когда вы являетесь администратором сервера. В файле php.ini отредактируйте следующие строки (добавьте при необходимости):
display_errors = On display_startup_errors = On error_reporting = E_ALL
Лучший способ вывода PHP ошибок на экран
На мой взгляд обычному пользователю удобнее всего использовать .htaccess, особенно если у вас больше чем один PHP файл. Способ №2 удобен для отладки одного php файла, чтобы не затрагивать уровень вывода ошибок для других php скриптов. Вариант с php.ini подойдет только администраторам сервера, но зато его действие распространяется на все сайты расположенные на данном сервере.
Благодарности
- http://drupalace.ru/lesson/vyvod-oshibok-php-na-ekran
- https://help.sweb.ru/entry/137
- http://ramzes.ws/blog/vkljuchit-vyvod-oshibok-php
- http://php.net/manual/ru/function.error-reporting.php
Как в PHP 8 показать все ошибки
По умолчанию в PHP 8 отключён показ ошибок, поэтому если во время выполнения PHP скрипта возникла проблема, то на экран ничего не будет выведено. Если ошибка в программе произошла до вывода HTML кода, то вы увидите белый экран веб-браузера.
Где настраивается вывод ошибок в PHP
Вывод ошибок настраивается в:
- коде скрипта
- .htaccess файле
- в конфигурационном файле PHP (например, в php.ini)
Настройке в коде скрипта влияют на поведение только программы, в которую внесены настройки.
Настройки в файле .htaccess влияют на все скрипты, находящиеся в данной директории и поддиректориях.
Настройки в конфигурационном файле php.ini влияют на все запускаемые PHP скрипты, если в них не переназначены настройки вывода ошибок.
Помните, что вывод ошибок очень полезен во время написания и отладки кода, но на рабочих серверах вывод ошибок должен быть отключён, чтобы предотвратить утечку чувствительных данных и затруднить атакующему взлом сайта.
Настройка вывода ошибок в PHP скрипте
Для вывода всех ошибок, добавьте в начало скрипта следующие строки:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
Данные настройки включают вывод всех ошибок и предупреждений в веб-браузер пользователя.
Будут выведены предупреждения об использовании устаревших конструкций.
Настройка вывода ошибок в журналы веб-сервера выполняется отдельно.
Помните, что при возникновении фатальных ошибок, то есть когда скрипт даже не смог запуститься из-за неправильного синтаксиса PHP, то для вывода ошибок будут применяться правила, указанные в файле php.ini или .htaccess. Это обусловлено тем, что при неправильном синтаксисе интерпретатор PHP не понимает весь файл, в том числе и указанные выше директивы. То есть если в коде пропущена точка с запятой или фигурная скобка, то ошибки будут выводиться в соответствии с настройками в файле php.ini.
Настройка вывода ошибок PHP в файле .htaccess
Включение вывода ошибок в файле .htaccess выполняется следующими директивами:
php_flag display_startup_errors on php_flag display_errors on
Чтобы они сработали, необходимо, чтобы на веб-сервере была включена поддержка файлов .htaccess.
Вывод ошибок в журнал веб-сервера выполняется следующей директивой:
php_value error_log logs/all_errors.log
Настройка вывода всех ошибок в файле 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 вы найдёте следующие директивы:
display_errors = Off display_startup_errors = Off
Для включения вывода ошибок замените их на:
display_errors = On display_startup_errors = On
По умолчанию значение error_reporting установлено на:
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
Это означает, что выводятся все ошибки, кроме предупреждений об устаревших конструкциях и предупреждения, вызванные строгой проверкой кода.
Чтобы выводить все ошибки и предупреждения, установите следующее значение:
error_reporting = E_ALL
- E_ALL (Показать все ошибки, предупреждения и уведомления, включая стандарты написания кода.)
- E_ALL & ~E_NOTICE (Показать все ошибки, кроме уведомлений)
- E_ALL & ~E_NOTICE & ~E_STRICT (Показать все ошибки, кроме уведомлений и предупреждений о стандартах написания кода.)
- E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Показать только ошибки)
Для того, чтобы изменения, сделанные в файле php.ini, вступили в силу, необходима перезагрузка веб-сервера.
- В Debian и производных дистрибутивах (Ubuntu, Linux Mint, Kali Linux и прочих) это делается командой:
sudo systemctl restart apache2.service
- В Arch Linux и производных дистрибутивах (Manjaro, BlackArch и прочих) это делается командой:
sudo systemctl restart httpd.service
Чтобы проверить, что настройки файла php.ini действительно применяются, создайте файл, например, с именем info.php и скопируйте в него:
Если вы создали файл в корневой папке веб-сервера, то в веб-браузере откройте адрес http://localhost/info.php.
На следующем скриншоте показано, что вывод ошибок отключён в файле php.ini:
На этом скриншоте видно, что вывод ошибок включён в файле php.ini:
Вывод ошибок в журнал веб-сервера
Настройка вывода ошибок в журнал веб-сервера настраивается в файле php.ini.
Для этого используется следующая директива:
log_errors = On
Расположение файла с ошибка настраивается в конфигурации веб-сервера.
Директива «error_reporting(‘all’);» и ошибка «Uncaught TypeError: error_reporting()»
При попытке использовать следующую конструкцию:
error_reporting('all');
Вы столкнётесь с ошибкой Uncaught TypeError: error_reporting().
Полный лог ошибки:
[Wed Jul 06 07:29:19.410966 2022] [php:error] [pid 14101] [client 127.0.0.1:58402] PHP Fatal error: Uncaught TypeError: error_reporting(): Argument #1 ($error_level) must be of type ?int, string given in /srv/http/suip/index.php:3\nStack trace:\n#0 /srv/http/suip/index.php(3): error_reporting('all')\n#1 \n thrown in /srv/http/suip/index.php on line 3, referer: http://localhost/suip/
Вместо ‘all‘ вам нужно указать константу, выражающую уровень сообщения об ошибках. Допустимые значения провидены на этой страницы: https://www.php.net/manual/errorfunc.constants.php
Следующая запись является правильной для PHP 8 и означает показывать все ошибки, замечания и рекомендации:
error_reporting(E_ALL);
Вывод ошибок PHP
Как правило, хостинг-провайдеры отключают или блокируют показ ошибок PHP. Подобные ограничения вводятся потому что информацией об ошибках могут воспользоваться злоумышленники. Поэтому на рабочих серверах нежелательно включать вывод ошибок на экран.
При разработке сайтов и скриптов крайне важно отслеживать возникающие проблемы. Также эта информация нужна и системным администраторам, чтобы своевременно предотвращать сбои в работе сайта и сервера.
Лучшим вариантом будет отключить вывод ошибок на экран и настроить отображение ошибок в логах. Так вы сможете отслеживать возникающие проблемы, не подвергая сервер угрозе.
В статье мы расскажем, как отключить или включить отображение ошибок PHP при помощи .htaccess, через скрипт PHP и с помощью файла php ini.
Обратите внимание: в некоторых случаях изменить настройки вывода можно только через обращение в техническую поддержку.
Способы включения и отключения вывода ошибок PHP
Через .htaccess
Перейдите в корневую папку сайта. Путь к корневой папке можно посмотреть в разделе «Хостинг» > «Сайты» в колонке «Папка»:

Открыть папку можно в разделе «Хостинг» > «Файловый менеджер». Другой способ перейти к папке: в разделе «Хостинг» > «Сайты» в колонке «Операции» нажмите Открыть папку.
В корневой папке откройте файл .htaccess. Если файла не существует, создайте его.
Чтобы вывести ошибки, добавьте в файл следующие строки:
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
Чтобы отключить ошибки PHP, добавьте в файл строки:
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
Так же отключить отображение PHP error можно используя строки:
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
Через логи PHP
Проверить или скрыть ошибки в определенных файлах можно при помощи вызова PHP-функций.
Способ 1. Для вывода ошибок используйте функцию error_reporting. Пропишите необходимое вам значение в зависимости от того, какие ошибки вы хотите увидеть.
- Функция для вывода всех ошибок:
error_reporting(E_ALL)
- Функция для вывода всех ошибок, за исключением типа Notice:
error_reporting(E_ALL & ~E_NOTICE)
- Отключение вывода:
error_reporting(0)
- Отключение логирования повторяющихся ошибок:
# disable repeated error logging
php_flag ignore_repeated_errors on
php_flag ignore_repeated_source on
Способ 2. Этот метод подойдет для проверки конкретной части кода. Пропишите необходимое вам значение в зависимости от того, какие типы ошибок вы хотите увидеть.
Команда для вывода всех ошибок выглядит следующим образом:
ini_set(‘display_errors’, ‘On’)
error_reporting(E_ALL)
После этого добавьте:
ini_set(‘display_errors’, ‘Off’)
Способ 3. Другой вариант включения вывода ошибок через скрипт:
php_flag display_startup_errors on
php_flag display_errors on
Для отключения добавьте строки:
php_flag display_startup_errors off
php_flag display_errors off
Способ 4. Для подключения вывода с логированием через конфигурацию веб-сервера введите:
ErrorLog «/var/log/apache2/my-website-error.log»,
- для Nginx:
error_log /var/log/nginx/my-website-error.log.
Подробнее о других аргументах вы можете прочитать в документации PHP на официальном сайте php.net.
Через файл php.ini
Включить отслеживание ошибок можно с помощью файла php.ini. Такой способ подойдет тем, кто хочет отобразить или скрыть ошибки для всего сайта или кода.

Важно! Настройка отслеживания ошибок через файл php.ini есть не у всех, так как некоторые хостинг-провайдеры частично или полностью закрывают доступ к файлу.
Способ 1. Показать все ошибки можно добавив в php.ini строку:
display_errors = on
После этого перезагрузите сервер:
sudo apachectl -k graceful
Способ 2. Включить вывод ошибок можно при помощи error_reporting. После знака «=» пропишите необходимое вам значение в зависимости от того, какие типы ошибок вы хотите увидеть.
Чтобы вывести все ошибки, добавьте следующие строки:
error_reporting = E_ALL
display_errors On
После перезагрузите веб-сервер:
sudo apachectl -k graceful
Чтобы скрыть отображение ошибок, добавьте строки:
error_reporting = E_ALL
display_errors Off
Теперь вы знаете, как можно включить и отключить вывод ошибок PHP.
