написание хендлера для красивого и правильного http ответа если на сайте произошла критическая ошибка.
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 (Сервис недоступен)), то и для всяких роботов хорошо будет.
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
|
This post was edited by Macik (2011-12-20 00:07, 12 years ago) |
esclkm |
|
---|---|
согласен - еще в статью не вчитывался - но идея мне понравилась! записать ошибку в файл - а узеру показать красивую фигу littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
Moool13 |
|
---|---|
Но при этом надо, чтобы админ смог увидеть ошибку |
Trustmaster |
|
---|---|
Давно об этом думал, но пока останавливало то, о чём Moool13 сказал :) То есть, куда писать ошибки и в каком формате, чтобы админ их смог быстро найти и проанализировать. May the Source be with you!
|
Macik |
|
---|---|
#32057 Moool13: Для этого и пишем в файл. К тому же если ошибка критическая можно хоть отправку емейла настроить. (отписались практически одновременно) Добавлю:
Для админа надо писать в лог site.ru/log/somename.log (имя лога можно задавать через config.php, чтобы обезапасить от стороннего просмотра), Опять же главное чтобы механизм был, т.е. можно начать с самого простого варианта, а потом вынести на обсуждение формат, отправку емейл и проч. https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
|
This post was edited by Macik (2011-12-14 22:44, 12 years ago) |
Trustmaster |
|
---|---|
Теперь о граблях. Чтобы писать в site.ru/log/somename.log, нужно эту папку создать и выставить там права на запись - народ будет возмущён лишними телодвижениями. Далее, чтобы защитить папку паролем, надо во-первых чтобы вебсервер был Apache (в эпоху набирающего обороты nginx), а во-вторых надо этот пароль задать (опять лишние телодвижения для ленивых). Наконец, за этим логом надо будет следить и периодически его подчищать или архивировать. Вот это всё меня и останавливало. В принципе, есть альтернатива: писать в стандартный лог ошибок PHP с помощью функции trigger_error(). При этом на production-сайтах, где выключен debug_mode, ошибки на экран не выводятся. Вместо них-то и можно показывать красивую заставку с 503-статусом. May the Source be with you!
|
McDuck |
|
---|---|
Проще всего спрятать в html-comment на 503 странице. Админу достаточно просто просмотреть исходный текст |
Moool13 |
|
---|---|
#32106 McDuck: Думаешь другие этого не умеют?) |
McDuck |
|
---|---|
2 Moool13 Думаю, это лучше (и красивее), чем выводить информацию об ошибке открыто на странице. |
Macik |
|
---|---|
#32097 Trustmaster: Разумное решение. Лишних настроек нет. А админу один фиг - если на продакшене что-то упало надо будет разбираться и в логи залезать. https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
Trustmaster |
|
---|---|
Значит так и сделаем. May the Source be with you!
|