- Как включить отображение ошибок и предупреждений PHP?
- Включение отображения ошибок и предупреждений PHP через php.ini
- Включение отображения ошибок и предупреждений PHP напрямую в скрипте
- Включение отображения ошибок и предупреждений PHP через .htaccess
- Отображение ошибок PHP через .htaccess и другими способами
- Способы вывода ошибок PHP
- Преимущества вывода ошибок в файле .htaccess
- Виды ошибок PHP в файле .htaccess
- Как включить вывод ошибок через .htaccess
- Примеры практического применения
- Включение журналирования ошибок PHP в .htaccess
- Дополнительные способы вывода ошибок PHP
- Вывод ошибок в PHP-скрипте
- Через файл php.ini
- Как включить вывод ошибок PHP
- Через .htaccess
- Через логи PHP
- Через файл php.ini
Как включить отображение ошибок и предупреждений PHP?
Когда перед вами находится сайт, в котором нарушена целостность работы функционала, то необходимо понять, в чем же ошибка, и постараться максимально быстро ее решить.
Зачастую корень проблемы лежит в PHP-файлах, а именно – в логике их работы.
В PHP существует встроенный обработчик ошибок, который при возникновении таковых может указать вам истинную причину проблемы.
Все, что вам нужно сделать, – это просто включить их отображение, если по умолчанию этого не сделано.
Для включения отображения ошибок и предупреждений существует 3 различных варианта. Смотрите все и выбирайте более удобный для вас.
Включение отображения ошибок и предупреждений PHP через php.ini
Если у вас есть доступ к файлу php.ini (чаще всего он находится в корневой папке вашего сайта), то в самый верх вставьте:
error_reporting = E_ALL display_errors = On display_startup_errors = On
Если же доступа к этому файлу нет, то вам подойдут следующие 2 варианта.
Включение отображения ошибок и предупреждений PHP напрямую в скрипте
Этот вариант предполагает внедрение определенных параметров непосредственно в сам PHP-скрипт. Для этого в нужном файле PHP, сразу после открывающего тега вставьте:
ini_set("error_reporting", E_ALL); ini_set("display_errors", 1); ini_set("display_startup_errors", 1);
Хороший способ, когда вы «отлавливаете» ошибки в конкретном файле.
Включение отображения ошибок и предупреждений PHP через .htaccess
Если вам необходимо отобразить ошибки на всем сайте, то в корневой папке сайта найдите файл «.htaccess» (если таковой отсутствует – создайте его) и в самый верх этого файла вставьте:
php_value error_reporting E_ALL php_value display_errors 1 php_value display_startup_errors 1
С помощью таких несложных способов вы можете включить отображение ошибок и предупреждений PHP на вашем сайте или отдельном PHP-скрипте.
Отображение ошибок PHP через .htaccess и другими способами
Ошибки в коде — неотъемлемая часть любого процесса разработки. Чтобы понять, почему не выполняется скрипт, необходимо вывести error-логи PHP на экран.
Следует помнить, что в публичной версии сайта вывод ошибок на экран должен быть отключён.
Способы вывода ошибок PHP
- Через файл .htaccess, отвечающий за дополнительные параметры сервера Apache.
- Непосредственно через PHP-скрипт.
- Через файл php.ini, содержащий настройки интерпретатора PHP.
Преимущества вывода ошибок в файле .htaccess
- Широкий охват. Параметры распространяются на все элементы дочерних поддиректорий.
- Быстрота и удобство. Обработка ошибок настраивается в несколько команд и в одном месте.
Вывод ошибок на экран лучше делать через файл .htaccess, особенно когда PHP-файлов несколько. Поэтому далее разберём этот способ подробнее.
Виды ошибок PHP в файле .htaccess
- E_ALL — все виды ошибок, кроме E_STRICT до PHP 5.4.0.
- E_ERROR — фатальные ошибки, прекращающие работу скрипта.
- E_WARNING — ошибки-предупреждения. Не являются фатальными, поэтому не вызывают прекращение работы скрипта.
- E_PARSE — ошибки разбора. Могут возникать только во время компиляции.
- E_NOTICE — уведомления о нарушении времени выполнения скрипта.
- E_CORE_ERROR — фатальная ошибка обработчика. Генерируется ядром во время запуска PHP-скрипта.
- E_CORE_WARNING — предупреждения компиляции, возникающие при запуске PHP-скрипта.
- E_COMPILE_ERROR — фатальные ошибки, возникающие на этапе компиляции.
- E_COMPILE_WARNING — предупреждение компилятора PHP-скриптов.
- E_USER_ERROR — ошибки, сгенерированные пользователями.
- E_USER_WARNING — предупреждения, сгенерированные пользователями.
- E_USER_NOTICE — уведомления, сгенерированные пользователями.
Как включить вывод ошибок через .htaccess
Файл .htaccess должен находиться в корневой директории сайта (например, «public_html»). Отредактировать его можно с помощью проводника, доступного в панели хостинга.
Примечание. Если файла .htaccess нет, то его необходимо создать.
Включить отображение ошибок PHP и настроить фильтрацию их вывода можно двумя директивами: «display_errors» и «error_reporting». Первая отвечает за состояние режима показа ошибок («On» или «Off»), а вторая задаёт глубину отображения.
Показать ошибки PHP на экране можно с помощью следующего кода:
php_flag display_errors on php_value error_reporting -1
После сохранения изменённого файла, следует обновить страницу.
Примеры практического применения
Используя указанный код, можно быстро включить или отключить вывод ошибок, а также настроить различные конфигурации для разных режимов работы.
Следующий код скроет ошибки PHP с экрана:
# скрыть ошибки php 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 php_flag log_errors on # месторасположение журнала ошибок PHP php_value error_log /var/www/имя_пользователя/data/www/ваш_www-домен/
Чтобы обработка ошибок в .htaccess выполнялась безопасно надо обязательно защитить папку с log-файлами от внешнего доступа при помощи следующего кода:
# запретить доступ к журналу ошибок PHPOrder allow,deny Deny from all Satisfy All
Можно также настроить фильтрацию. Флаг «integer» указывает на глубину вывода данных (уровень показа). Значение «0» не выведет никаких ошибок. Комбинация «8191» запишет в log-файл сбои всех уровней.
# общая директива для фильтрации ошибок php php_value error_reporting integer
Чтобы текст ошибок не обрезался, можно установить максимальный размер на строку:
# общая директива для установки максимального размера строки log_errors_max_len integer
Выключение записи повторяющихся ошибок сократит объём поступающих данных и улучшит восприятие информации:
# отключить запись повторяющихся ошибок php_flag ignore_repeated_errors on php_flag ignore_repeated_source on
В результате настройки .htaccess для сайта, находящегося в публичном доступе, должны выглядеть так:
# обработка ошибок PHP для публичного ресурса php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off php_flag log_errors on php_flag ignore_repeated_errors off php_flag ignore_repeated_source off php_flag report_memleaks on php_flag track_errors on php_value docref_root 0 php_value docref_ext 0 php_value error_reporting -1 php_value log_errors_max_len 0Order allow,deny Deny from all Satisfy All
Во время разработки или отладки файл .htaccess должен содержать следующий код:
# Обработка ошибок PHP во время разработки php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag log_errors on php_flag ignore_repeated_errors off php_flag ignore_repeated_source off php_flag report_memleaks on php_flag track_errors on php_value docref_root 0 php_value docref_ext 0 php_value error_log /home/path/public_html/domain/PHP_errors.log # [see footnote 3] # php_value error_reporting 999999999 php_value error_reporting -1 php_value log_errors_max_len 0Order allow,deny Deny from all Satisfy All
Включение журналирования ошибок PHP в .htaccess
Когда отображение ошибок на странице выключено, необходимо запустить их журналирование следующим кодом:
# включение записи PHP ошибок php_flag log_errors onphp_value error_log /home/path/public_html/domain/PHP_errors.log
Примечание. Вместо « /home/path/public_html/domain/PHP_errors.log » нужно подставить собственный путь до директории, в которой будет вестись журнал ошибок.
Чтобы запретить доступ к журналу извне, нужно добавить следующий код:
# предотвращаем доступ к логу PHP ошибокOrder allow,deny Deny from all Satisfy All
Дополнительные способы вывода ошибок PHP
Можно добавить оператор «@», чтобы запретить показ ошибок в конкретной инструкции PHP:
Вывод ошибок в PHP-скрипте
Чтобы выводить все ошибки, нужно в начале скрипта прописать:
Если необходимо отображать ошибки PHP только из определённого места скрипта, то можно использовать следующий код:
ini_set('display_errors', 'On'); // сообщения с ошибками будут показываться error_reporting(E_ALL); // E_ALL - отображаем ВСЕ ошибки $value = $var[$key]; // пример ошибки ini_set('display_errors', 'Off'); // теперь сообщений НЕ будет
Примечание. Если заменить значения «On» и «Off» в первой и последней строках на противоположные, то на конкретном участке кода ошибки выводиться не будут.
Через файл php.ini
Включить или выключить показ ошибок на всём сайте/хостинге также можно с помощью файла «php.ini», в котором нужно изменить два следующих параметра:
error_reporting = E_ALL display_errors On
Первая строка отвечает за фильтрацию ошибок (в данном случае показываться будут все типы сбоев), а вторая активирует их отображение на экране. После изменений этого файла необходимо перезапустить сервер Apache.
Надежный хостинг для сайта. 14 дней — бесплатно!
Как включить вывод ошибок PHP
Хостинг-провайдеры нередко отключают или блокируют вывод всех ошибок и предупреждений. Такие ограничения вводятся не просто так. Дело в том, что на рабочих серверах крайне не рекомендуется держать ошибки в открытом доступе. Информация о неисправностях может стать «наживкой» для злоумышленников.
При этом в процессе разработки сайтов и скриптов, очень важно отслеживать возникающие предупреждения. Знать о сбоях и неисправностях также важно и системным администраторам — это позволяет предотвратить проблемы на сайте или сервере.
Самый оптимальный вариант — не просто скрыть показ ошибок, но и настроить запись о них в логах. Это позволит отслеживать предупреждения и не подвергать сервер угрозе.
В статье мы расскажем, как включить и отключить через .htaccess вывод ошибок php, а также двумя другими способами — через скрипт PHP и через файл php.ini.
Обратите внимание: в некоторых случаях изменение настроек вывода возможно только через обращение в техническую поддержку хостинга.
Через .htaccess
Перейдите в каталог сайта и откройте файл .htaccess.
Вариант 1. Чтобы включить вывод, добавьте следующие строки:
php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on
Чтобы отключить ошибки PHP htaccess, введите команду:
php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off
Также выключить .htaccess display errors можно командой:
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. В зависимости от типа ошибок, которые вы хотите увидеть, подставьте нужное значение. Например, команда для вывода всех ошибок будет выглядеть так:
А для всех типов, исключая тип Notice, так:
error_reporting(E_ALL & ~E_NOTICE)
Чтобы отключить вывод, введите команду:
Чтобы отключить логирование повторяющихся ошибок, введите:
# 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. Чтобы настроить вывод с логированием через конфигурацию веб-сервера, введите:
- для Apache — ErrorLog «/var/log/apache2/my-website-error.log» ,
- для Nginx — error_log /var/log/nginx/my-website-error.log .
Подробнее о других аргументах читайте в документации на официальном сайте php.net.
Через файл php.ini
Настроить отслеживание также можно через файл php.ini. Этот вариант подойдет, когда отображение или скрытие ошибок нужно настроить для всего сайта или кода. Обратите внимание: возможность настройки через файл php.ini есть не у всех, поскольку некоторые хостинг-провайдеры частично или полностью закрывают доступ к файлу.
Вариант 1. Если у вас есть доступ, включить вывод можно командой:
После этого нужно перезагрузить сервер:
sudo apachectl -k graceful
Вариант 2. Чтобы включить вывод, используйте команду error_reporting. В зависимости от типа ошибок, которые вы хотите увидеть, после знака = подставьте нужное значение. Например, команда для вывода всех ошибок будет выглядеть так:
error_reporting = E_ALL display_errors On
После ввода перезагрузите сервер:
sudo apachectl -k graceful
Чтобы скрыть отображение, во второй строке команды укажите Оff вместо On:
Теперь вы знаете, как настроить не только через PHP и php.ini, но и через htaccess отображение ошибок.