PHP Error & htaccess. Настройки вывода php ошибок при помощи htaccess

Описание настроек управления ошибками PHP, которые можно выполнить в .htaccess. Мы регулярно используем в своей работе те или иные настройки php, а именно в этой статье собрано наиболее полное описание этих возможностей. Автор статьи Jeff Starr.

Убираем отображение ошибок php на сайте

# supress php 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 в произвольный лог файл

# enable PHP error logging
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

Защищаем папку с логами от доступа

# prevent access to PHP error log
<Files PHP_errors. log>
Order allow,deny
Deny from all
Satisfy All
</Files>

Выставляем уровень вывода ошибок

integer — флаг, который задает глубину вывода ошибок. 0 — не выводить ничего, 8191- выводить в лог все. Значение 1 — выводит ошибки. Более подробное описение в документации по PHP.

# general directive for setting php error level

php_value error_reporting integer

Выставляем максимальный размер для строки с ошибкой

# general directive for setting max error size
log_errors_max_len integer

Отключить логирование повторяющихся ошибок

# disable repeated error logging
php_flag ignore_repeated_errors on
php_flag ignore_repeated_source on

Настройки для сайта в рабочем режиме

# PHP error handling for production servers
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 0

<Files /home/path/public_html/domain/PHP_errors. log>
Order allow,deny
Deny from all
Satisfy All
</Files>

Конфигурация для отладки или разработки

# PHP error handling for development servers
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 0

<Files /home/path/public_html/domain/PHP_errors.log>
Order allow,deny
Deny from all
Satisfy All
</Files>

Jeff Starr

Advanced PHP Error Handling via htaccess

Функции ошибок PHP

❮ Предыдущий Далее ❯


Введение в PHP Error

Функции обработки ошибок используются для обработки и регистрации ошибок.

Функции обработки ошибок позволяют нам определять собственные правила обработки ошибок и изменять способ регистрации ошибок.

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

Функции отчетов об ошибках позволяют нам настроить уровень и тип дается сообщение об ошибке.


Установка

Функции обработки ошибок PHP являются частью ядра PHP. Установка не требуется использовать эти функции.


Конфигурация среды выполнения

На поведение функций обработки ошибок влияют настройки в php.ini.

Ошибки и параметры конфигурации регистрации:

ошибки отправляются в системный журнал.
Имя По умолчанию Описание Сменный
отчет об ошибках НУЛЕВОЙ Задает уровень сообщения об ошибках (целое число или именованные константы) PHP_INI_ALL
display_errors «1» Указывает, следует ли выводить ошибки на экран или их следует скрывать от пользователя.

Примечание: Эту функцию никогда не следует использовать в производственных системах (только для поддержки разработки)
PHP_INI_ALL
display_startup_errors «0» Даже если параметр display_errors включен, ошибки, возникающие во время последовательности запуска PHP, не отображаются. PHP_INI_ALL
лог_ошибок «0» Определяет, должны ли сообщения об ошибках сценария записываться в журнал ошибок сервера или в error_log.
Примечание: Настоятельно рекомендуется использовать ведение журнала ошибок вместо отображения ошибок на рабочих веб-сайтах
PHP_INI_ALL
log_errors_max_len «1024» Устанавливает максимальную длину log_errors в байтах. Значение «0» можно использовать, чтобы вообще не применять максимальную длину. Эта длина применяется к регистрируемым ошибкам, отображаемым ошибкам, а также к $php_errormsg (доступно с PHP 4. 3) PHP_INI_ALL
ignore_repeated_errors «0» Указывает, следует ли регистрировать повторяющиеся сообщения об ошибках. Если установлено значение «1», он не будет регистрировать ошибки с повторяющимися ошибками из одного и того же файла в той же строке (доступно с PHP 4.3) PHP_INI_ALL
ignore_repeated_source «0» Указывает, следует ли регистрировать повторяющиеся сообщения об ошибках. Если установлено значение «1», он не будет регистрировать ошибки с повторяющимися ошибками из разных файлов или строк исходного кода (доступно, начиная с PHP 4.3) PHP_INI_ALL
отчет_memleaks «1» Если установлено значение «1» (по умолчанию), этот параметр будет отображать отчет об утечках памяти, обнаруженных диспетчером памяти Zend (доступен, начиная с PHP 4.3) PHP_INI_ALL
track_errors «0» Если установлено значение «1», последнее сообщение об ошибке всегда будет присутствовать в переменной $php_errormsg PHP_INI_ALL
html_errors «1» Отключает теги HTML в сообщениях об ошибках PHP_INI_ALL
PHP_INI_SYSTEM в PHP <= 4. 2.3.
xmlrpc_errors «0» Отключает обычные отчеты об ошибках и форматирует ошибки как сообщение об ошибке XML-RPC (доступно, начиная с PHP 4.1) PHP_INI_SYSTEM
xmlrpc_error_number «0» Используется как значение элемента XML-RPC faultCode (доступно, начиная с PHP 4.1) PHP_INI_ALL
docref_root «» (доступно начиная с PHP 4.3) PHP_INI_ALL
docref_ext «» (доступно начиная с PHP 4.3.2) PHP_INI_ALL
error_prepend_string НУЛЕВОЙ Задает строку для вывода перед сообщением об ошибке PHP_INI_ALL
error_append_string
НУЛЕВОЙ Задает строку для вывода после сообщения об ошибке PHP_INI_ALL
журнал_ошибок НУЛЕВОЙ Указывает имя файла, в котором должны регистрироваться ошибки сценария. Файл должен быть доступен для записи пользователю веб-сервера. Если используется специальное значение syslog, вместо PHP_INI_ALL



Функции регистрации ошибок и регистрации ошибок PHP

Функция Описание
debug_backtrace()
Создает обратную трассировку
debug_print_backtrace() Печатает обратную трассировку
error_clear_last() Сбрасывает последнюю ошибку
error_get_last() Возвращает последнюю возникшую ошибку
error_log() Отправляет сообщение об ошибке в журнал, в файл или на почтовый ящик
error_reporting() Указывает, о каких ошибках сообщается
restore_error_handler() Восстанавливает предыдущий обработчик ошибок
restore_exception_handler() Восстанавливает предыдущий обработчик исключений
set_error_handler() Устанавливает определяемую пользователем функцию обработчика ошибок
set_exception_handler() Задает определяемую пользователем функцию обработчика исключений
триггер_ошибка() Создает сообщение об ошибке на уровне пользователя
user_error() Псевдоним для функции trigger_error()

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

.......
Значение Константа Описание
1 E_ERROR Неустранимые ошибки времени выполнения. Ошибки, от которых невозможно избавиться. Выполнение скрипта остановлено
2 E_WARNING Предупреждения во время выполнения (нефатальные ошибки). Выполнение скрипта не остановлено
4 E_PARSE Ошибки синтаксического анализа во время компиляции. Ошибки синтаксического анализа должны генерироваться только синтаксическим анализатором
8 E_NOTICE Уведомления во время выполнения. Скрипт обнаружил что-то, что может быть ошибкой, но также может произойти при обычном запуске скрипта
16 E_CORE_ERROR Фатальные ошибки при запуске PHP. Это похоже на E_ERROR, за исключением того, что генерируется ядром PHP
32 E_CORE_WARNING Нефатальные ошибки при запуске PHP. Это похоже на E_WARNING, за исключением того, что оно генерируется ядром PHP
64 E_COMPILE_ERROR Неустранимые ошибки времени компиляции. Это похоже на ошибку E_ERROR, за исключением того, что она генерируется обработчиком сценариев Zend
128 E_COMPILE_WARNING Некритические ошибки времени компиляции. Это похоже на E_WARNING, за исключением того, что оно генерируется Zend Scripting Engine
256 E_USER_ERROR Неустранимая ошибка пользователя. Это похоже на E_ERROR, за исключением того, что оно генерируется в коде PHP с помощью функции PHP trigger_error() 9.0041
512 E_USER_WARNING Нефатальное пользовательское предупреждение. Это похоже на E_WARNING, за исключением того, что оно генерируется в коде PHP с помощью функции PHP trigger_error()
1024 E_USER_NOTICE Пользовательское уведомление. Это похоже на E_NOTICE, за исключением того, что оно генерируется в коде PHP с помощью функции PHP trigger_error()
2048 E_STRICT Включите, чтобы PHP предлагал изменения в вашем коде, которые обеспечат наилучшую совместимость и прямую совместимость вашего кода (начиная с PHP 5, но не включенного в E_ALL до PHP 5.4)
4096 E_RECOVERABLE_ERROR Захватываемая фатальная ошибка. Указывает на то, что произошла, вероятно, опасная ошибка, но она не оставила Engine в нестабильном состоянии. Если ошибка не перехватывается определяемым пользователем дескриптором, приложение прерывается, так как это было E_ERROR (начиная с PHP 5.2)
8192 E_DEPRECATED Уведомления во время выполнения. Включите это, чтобы получать предупреждения о коде, который не будет работать в будущих версиях (начиная с PHP 5.3)
16384 E_USER_DEPRECATED Предупреждающее сообщение, созданное пользователем. Это похоже на E_DEPRECATED, за исключением того, что оно генерируется в коде PHP с помощью функции PHP trigger_error() (начиная с PHP 5. 3)
32767 Е_ВСЕ Включить все ошибки и предупреждения PHP (кроме E_STRICT в версиях < 5.4)

❮ Предыдущий Далее ❯


Как включить отображение ошибок php на сайте

Навигация

 

Временное отображение ошибок PHP важно и полезно для решения различных проблем на сайте. Например:

  • Вместо контента на вашем сайте будет отображаться пустая страница или
  • 500 Отображается сообщение об ошибке.

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

Вы можете настроить отчеты об ошибках PHP в файле php.ini (если у вас есть доступ к этому файлу). Установите следующие строки:

error_reporting  =  E_ALL
display_errors = On

Если вы установили свой сервер, например. с помощью XAMPP см. документацию, где найти файл php.ini . Не забудьте остановить сервер Apache перед внесением изменений и запустить его снова после сохранения этих изменений.

Если у вас нет доступа к файлу php.ini , но вы можете изменить файл .htaccess на вашем сервере (в корне папки public_hml — ваш сайт Joomla!), попробуйте добавить туда следующий код (на некоторых серверах эта опция отключена, поэтому вам нужно обратиться к вашему оператору веб-хостинга):

# Отображение ошибок PHP
php_flag display_errors на
php_value error_reporting 6143

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

 

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

 

Иногда проблема может быть вызвана некорректно выполненным SQL-запросом. Включение режима отладки в Global Configuration Joomla! может заполнить информацию, отображаемую отчетом об ошибках PHP. В Global Configuration вы также можете указать отображение ошибок PHP (Global Configuration — Error Reporting). Но имейте в виду, это не имеет никакого эффекта, если на сервере отключено отображение ошибок PHP.

 

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

  • Включение отчетов об ошибках PHP в файле php.ini
  • Включение отчетов об ошибках PHP в файле .htaccess
  • Настройка отчетов об ошибках PHP на максимум в глобальной конфигурации в Joomla!
  • Установка режима отладки в глобальной конфигурации в Joomla!
  • Получение информации из файла журнала ошибок.

 

Последние новости и статьи

  • org/Article»> Выпущена версия галереи Phoca 4.5.2 (Joomla 4)
  • Выпущена версия 4.0.0 плагина консоли Phoca Cart
  • Выпущена стабильная версия гостевой книги Phoca 4.0.2
  • Phoca Download Версия 4.0.4 Выпущена
  • Выпущена версия 4.0.5 Phoca Cart

Свежие новости

Галерея Phoca, версия 4.5.2. Выпущены версия 4.5.2 плагина Phoca Gallery Content и плагина Phoca Gallery Button.

 

Список изменений:

  • Готово для Joomla 4.2
  • Готов к работе с PHP 8.1
  • Плагин Phoca Gallery Button готов для Joomla 4.2
  • Плагин Phoca Gallery Content поддерживает эффект Masonry, см. Плагин Phoca Gallery Content — Masonry Demo — Masonry CSS основан на How to Create a Pure CSS Masonry Portfolio? Статья опубликована Даниэлем.