Comments 43
Напоминает страницу ошибок в ASP. Тока здесь куда притней глазу.
На скриншоте все пароли и пассы наружу - раздолье для весёлых хацкеров.
Backtrace выдаётся только на машине с IP=127.0.0.1
Усё предусмотрено. ^_^
Усё предусмотрено. ^_^
Ну тогда ништяк ;)
а вы знаете, что на некоторых хостингах REMOTE_ADDR всегда содержит 127.0.0.1? говорю как человек, который их видел ну очень много.
дауж, подтверждаю, так как встречался и не раз!
Ну ладно вам, ладно… Не всё же с первого раза должно получаться :-) Как вам такой вариант:
$_SERVER['SERVER_ADDR'] == $_SERVER['REMOTE_ADDR']
?В большинстве современных нормальных фреймворках существует такое понятие, как environment. В отличие от development environment, в production environment никаких ошибок не должно отображаться в принципе, кому бы то ни было, а писать надо всё в логи.
не, серьезно. на REMOTE_ADDR завязываться не стоит. приведу пример: у нас apache на заднем конце, а nginx на переднем. допустим, кое-что забыли подкрутить и ip клиента всегда будет равен ip сервера. т.е. в конечном счете SERVER_ADDR == REMOTE_ADDR. вот такое вот бывает.
есть еще разные варианты. например, если у вас сервис типа http://translate.google.ru/translate_t?h…. запрашиваем в нем самого себя и опять таки SERVER_ADDR == REMOTE_ADDR. etc.
есть еще разные варианты. например, если у вас сервис типа http://translate.google.ru/translate_t?h…. запрашиваем в нем самого себя и опять таки SERVER_ADDR == REMOTE_ADDR. etc.
Короче, крутите тогда сами… ;-) Вообще в оригинальной версии класса
$_SERVER['SERVER_ADDR'] == $_SERVER['REMOTE_ADDR']
определяет показывать ли backtrace, если других инструкций не дано (считывается переменная окружения Aero()->get_option('show_backtrace', $is_localhost, 'error_handler');
если она выставлена в false ничего выводиться не будет). Я не даром упомянул MIT: делайте, что хотите, но меня не вините…Никак.
getenv - как.
getenv - как.
Если на сайте есть разделение прав, то луше показывать администратору, а для гостей логировать.
блин, это же мой айпишник!
так нефиг для кого не попало лог показывать
Красиво сделано. Спасибо.
А у меня больше на BSOD похоже
UFO just landed and posted this here
Лучше, конечно, никогда (даже такие) сообщения об ошибках не видеть :)
Спасибо за оригинальный код и его лицензию!
// Плюс топику и карме.
Спасибо за оригинальный код и его лицензию!
// Плюс топику и карме.
>Прочитав недавно на пьяную голову «Обработка ошибок и исключений в PHP»
Вот эта фраза, мне кажеться, заслуживает внимания.
Вот эта фраза, мне кажеться, заслуживает внимания.
«Код-то где, балаболка?» - вобще класс!!!
> Код релизится под MIT-лицензией.
Лол :)
Лол :)
UFO just landed and posted this here
Update: Немного отрезвев от пятничного пива, я задумался… А нафигом мне тут исключения? 0_o
Как автор топика, на который вы ссылаетесь, позволю себе прокомментировать необходимость (на мой взгляд) исключений:
если вы вызываете несколько функций (или методов) подряд, причем одну функцию из другой, то при использовании исключений код не будет выполняться за той точкой, в которой произошла ошибка. Если использовать просто связку set_error_handler-trigger_error, то код будет выполняться дальше.
Например:
<?
error_reporting(E_ALL);
function a() {
echo "This is function A<br />";
trigger_error('<b>Error!!!!!!!!!!!!!!!!!!!</br /></b>');
b();
}
function b() {
echo "This is function B<br />";
}
function err($code, $msg = '', $file = '', $line = 0) {
echo "This is error: ".$msg;
}
set_error_handler('err', E_ALL);
a();
?>
В этой ситуации при возникновении ошибки (точнее сигнале со стороны вашего приложения об ошибке) код продолжит выполняться и скрипт выведет на экран:
This is function A
This is error: Error!!!!!!!!!!!!!!!!!!!
This is function B
Если генерировать Exception, то до строки с вызовом b() интерпретатор не дойдет. Как поступать, решать каждому в отдельности.
И тут моя позиция такова: для notice показываем ваши красивости, но выполнение продолжаем, а для warning - красивости и останов приложения.
В django тоже красиво очень, а в django-book так и написано "надеюсь вам понравятся наши постельные тона" :-)
Наверное меня щас заминусуют, но... нафига? :) Хороший код должен работать без ошибок и исключений в продакшне. Т.е. фактически, ни перехват, ни оформление не нужны :)
Зачем пугать пользователей вот такими дампами?
… все должно быть тихо мирно и, главное, недоступно для левых глаз
… все должно быть тихо мирно и, главное, недоступно для левых глаз
почти как в rails из коробки ;)
И почему ребята из PHP сами такого не сделали?
Интересно, а как раньше вы дебагали свои творения? :)
О проектах с такими вложениями в народе будут говорить: «сайт говно, но какие ошибки выдает, залюбуешься» :)
А зеркала не осталось?
Только руки дошли, захотелось попробовать, а тут такое вот дело.
Сейчас ссылка недоступна.
Только руки дошли, захотелось попробовать, а тут такое вот дело.
Сейчас ссылка недоступна.
ОК, вижу. code.google.com/p/aero-php/source/browse/trunk/core/libs/error_reporter.php + еще aero.php
Но, как я понимаю, никакими лицензиями тут и не пахнет — просто побаловаться, иначе придется инклудить кусок фреймворка.
Но, как я понимаю, никакими лицензиями тут и не пахнет — просто побаловаться, иначе придется инклудить кусок фреймворка.
Sign up to leave a comment.
Когда критическая ошибка приносит радость…