Блог/Логирование PHP на reg.ru

Логирование ошибок PHP на хостинге reg.ru

Автор: Кудашев Сергей

Недавно начал переносить свои проекты с sweb.ru, хостинга, которым пользовался много лет, но который начал портиться в последнее время. Большинство проектов переношу на reg.ru, который мне больше нравится, как по ограничениям в нагрузке, так и по техническим ограничениям, накладываемым на сервер и php.

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

В ходе изучения панели (я предпочитаю cPanel) было найден только Журнал ошибок, куда логировались ошибки сервера, но никак не php. Использование справки хостинга так же не дало результатов. В итоге было найдено следующее решение, которое потом было подтверждено поддержкой хостинга.

Итак, решение логирования ошибок php на reg.ru делается через внесение изменений в php.ini, который находится в папке php-bin и доступен для редактирования. В данный файл надо добавить следующие инструкции:

display_startup_errors off
display_errors off
html_errors off
log_errors = on
error_log = "/путь к файлу/php_error.log"

Тут необходимо учитывать несколько моментов. Во-первых, использование инструкций display_startup_errors off, display_errors off, html_errors off не гарантируют вам полный запрет вывода ошибок, так как данные инструкции могут быть переопределены непосредственно в php скрипте. Во-вторых, данное решение не предполагает ротирование логов, поэтому если в них сыпется много ошибок, то надо следить за их размерами. В-третьих, если вы держите файл с ошибками в доступном для доступа извне месте (например, корне сайта), то желательно запретить обращение к данному файлу в .htaccess.

<Files php_errors.log>
	Order allow,deny
	Deny from all
	Satisfy All
</Files>

В ближайшее время поищу более элегантное решение, но пока и этого достаточно :)

Комментарии (0)