cotonti.com : Отлов фатальных ошибок (#776) https://www.cotonti.com Laatste forum onderwerpen Cotonti en Sun, 11 Jan 2026 13:34:58 -0000 Trustmaster Значит так и сделаем.

]]>
Vr, 16 Dec 2011 07:57:25 -0000
Macik #32097 Trustmaster:

В принципе, есть альтернатива: писать в стандартный лог ошибок PHP с помощью функции trigger_error(). При этом на production-сайтах, где выключен debug_mode, ошибки на экран не выводятся. Вместо них-то и можно показывать красивую заставку с 503-статусом.

Разумное решение. Лишних настроек нет. А админу один фиг - если на продакшене что-то упало надо будет разбираться и в логи залезать. 

]]>
Thu, 15 Dec 2011 23:57:23 -0000
McDuck 2 Moool13

Думаю, это лучше (и красивее), чем выводить информацию об ошибке открыто на странице.

]]>
Thu, 15 Dec 2011 20:44:35 -0000
Moool13 #32106 McDuck:

Проще всего спрятать в html-comment на 503 странице. Админу достаточно просто просмотреть исходный текст

Думаешь другие этого не умеют?)

]]>
Thu, 15 Dec 2011 20:13:43 -0000
McDuck Проще всего спрятать в html-comment на 503 странице. Админу достаточно просто просмотреть исходный текст

]]>
Thu, 15 Dec 2011 19:38:01 -0000
Trustmaster Теперь о граблях. Чтобы писать в site.ru/log/somename.log, нужно эту папку создать и выставить там права на запись - народ будет возмущён лишними телодвижениями. Далее, чтобы защитить папку паролем, надо во-первых чтобы вебсервер был Apache (в эпоху набирающего обороты nginx), а во-вторых надо этот пароль задать (опять лишние телодвижения для ленивых). Наконец, за этим логом надо будет следить и периодически его подчищать или архивировать. Вот это всё меня и останавливало.

В принципе, есть альтернатива: писать в стандартный лог ошибок PHP с помощью функции trigger_error(). При этом на production-сайтах, где выключен debug_mode, ошибки на экран не выводятся. Вместо них-то и можно показывать красивую заставку с 503-статусом.

]]>
Thu, 15 Dec 2011 14:13:08 -0000
Macik #32057 Moool13:

Но при этом надо, чтобы админ смог увидеть ошибку

Для этого и пишем в файл. К тому же если ошибка критическая можно хоть отправку емейла настроить.

(отписались практически одновременно)  Добавлю:

Для админа надо писать в лог site.ru/log/somename.log (имя лога можно задавать через config.php, чтобы обезапасить от стороннего просмотра),
можно в отдельную папку писать закрытую htaccess паролем.
Формат (для меня лично) особоразницы не имеет, plain-text как вариант, критические ошибки опционально (по настройке) отправлять мылом.

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

]]>
Wo, 14 Dec 2011 14:15:27 -0000
Trustmaster Давно об этом думал, но пока останавливало то, о чём Moool13 сказал :) То есть, куда писать ошибки и в каком формате, чтобы админ их смог быстро найти и проанализировать.

]]>
Wo, 14 Dec 2011 14:14:38 -0000
Moool13 Но при этом надо, чтобы админ смог увидеть ошибку

]]>
Wo, 14 Dec 2011 11:53:51 -0000
esclkm согласен - еще в статью не вчитывался - но идея мне понравилась! записать ошибку в файл - а узеру показать красивую фигу

]]>
Wo, 14 Dec 2011 06:38:46 -0000
Macik Очередной раз при отдадке увидел:


2011-12-13 21:43

Fatal error: Could not connect to database !
Please check your settings in the file datas/config.php
MySQL error : SQLSTATE[28000] [1045] Access denied for user 'db_usr'@'localhost' (using password: YES)

#0  cot_diefatal(Could not connect to database !

		Please check your settings in the file datas/config.php

		MySQL error : SQLSTATE[28000] [1045] Access denied for user 'db_usr'@'localhost' (using password: YES)) called at [site\system\common.php:87]
#1  require_once(site\system\common.php) called at [site\index.php:37]

и родилась идея... создать правильный отлов таких (и прочих фатальных) ошибок.

Вот тут очень хорошо об этом написано: http://habrahabr.ru/blogs/php/134499/

На словах и в примерах кода все довольно просто. Думаю в реализации тоже не сильно проблемно. Зато добавит + движку. И предотвратит утекание ненужной информации налево.

А если при этом еще и отдавать правильный код в HTTP ответе (например 503 Service Unavailable (Сервис недоступен)), то и для всяких роботов хорошо будет.

 

 

]]>
Di, 13 Dec 2011 21:51:40 -0000