Фатальная ошибка и заголовки Веб-сервера

akxxiv

Новичок
Фатальная ошибка и заголовки Веб-сервера

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

Например вызываем (jQuery) к.л. скрипт:

PHP:
$.post('error.php',{}, function(data){}, 'json');
Но в файл error.php происходит ошибка, ну или просто выход: die('error');
А ожидалась строка в формате 'json'. Так вот при ошибке нужно например вызвать alert() cс ошибкой, и это реализумено с помощью $.ajaxError()
Но вот как скрипт поймет что произошла ошибка???

Вероятно по заголовку сервера, НО даже при фатальных ошибках типа «Fatal error: Call to a member function ..» вылетает 200 заголовок.

Отсюда вывод - надо послать какой-то другой заголовок НО ВОТ КАКОЙ? может 500 или нет? Или есть другие способы?

У кого есть акие соображения на этот счет?
 

dimagolov

Новичок
akxxiv, ответь на простой вопрос. у тебя при ошибках callback вызывается или нет?
 

akxxiv

Новичок
У меня пока ничего не вызывается. Я пробую варианты. Вообще сейчас у меня любая ошибка перехватывается, потом сериализуется в массив вида { result: result, error: error } Если ошибки нет то error пустой.
Но мне этот вариант не нравится. Хочется забыть об ошибках, которые просто должны вылетть в отладочное окно. Кроме того у меня не перехыватывается пока экстренный выход путем die().

Просто думаю должен же быть какой-то стандартный способ сказать что в приложении возникла ошибка. И чтоб клиент это однозначно понял.
 

dimagolov

Новичок
в jQuery длжен быть код обработки ошибок ajax-запросов. а если back-end отработал корректно, то нужно, чтобы он отдавал корректный JSON, а то он будет eval-иться и крашить JS при кривой структуре, в лучшем случае отдавать undefined в качестве результата, это можно проверить в разных браузерах.
 

newARTix

Новичок
кстати... а разве mod_php не отдает 500 при фатальных ошибках? о_О А как-то можно его заставить это делать?
Лень гуглить... :)
 

Ярослав

Новичок
newARTix
Поражаюсь с таких людей.
А не лень обновлять страничку и ждать пока кто нибудь все-таки ответит? Помоему поискать быстрее :)

http://stackoverflow.com/questions/2331582/catch-php-fatal-error
 

newARTix

Новичок
Ярослав
не, яж все-равно сюда захожу, че мне ждать :) Спасибо :)
 

akxxiv

Новичок
Т.е. кидать 500-ю ошибку при ошибках это идеологически верное решение?
 

newARTix

Новичок
akxxiv
м.б. и нет. Но кидать 200, тоже вроде как не то, что лучше-то? Может 3хх?
 

Активист

Активист
Команда форума
Небольшой оффтоп, но действительно, как при Fatal Error выдать 500 ошибку? Ибо, один раз один из очень раскрученом сайте, в резальтате того, что верстальщик вставлял код GA, закосячил один из шаблонов Smarty, из-за чего была фатальная ошибка, и в кеш яндекса ушла морда с текстом "fatal error" =)
 

akxxiv

Новичок
Не знаю как при display_errors=Off , но при ini_set('display_errors',0); выдает 200

-~{}~ 06.09.10 19:34:

Кстати, в догонку.
Кто знает, Начала сообщений об ошибках типа:

Warning: ...
Notice: ...
Fatal error: ....

Они могут быть изменены в настройках сервера. И если да кто-нибудь сталкивался с этим? В смысле залил на к.л. хостинг а там вдруг ошибки по другому звучат?
 

fixxxer

К.О.
Партнер клуба
Дык если отваливается на этапе компиляции то до твоего ини_сета дело не доходит.

Что там в тексте ошибок тебя волновать не должно, если тебе нужно их обрабатывать то юзай set_error_handler. В случае же с фатал еррором это 500 и всё (display_errors на production-е должен быть off на уровне конфигурации php, если это не так то админ идиот).
 
Сверху