Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Apache отдает error 500 вместо выставленной в PHP 600

Автор: safo
Дата сообщения: 15.08.2007 19:53
Я знаю, тут есть кому ответить

В РНР формирую header('HTTP/1.1 600 Any error');

В ответ получаю 500 Internal error

Какие настройки требуюется изменить в PHP или в Apache?
Автор: Cheery
Дата сообщения: 15.08.2007 19:56
safo

Цитата:
В ответ получаю 500 Internal error

Какие настройки требуюется изменить в PHP или в Apache?

читаем error_log - там все написано
кода 600 нет вообще
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Автор: safo
Дата сообщения: 15.08.2007 20:01
Я понимаю. Мне нужно обработать ошибки при работе с базой данных. Я подобные скрипты уже обкатывал, все работало. Но это было на других серваках. А дома у меня отлуп
Автор: Cheery
Дата сообщения: 15.08.2007 20:02
safo

Цитата:
А дома у меня отлуп

еще раз.. читаем логи ошибок

Автор: safo
Дата сообщения: 15.08.2007 20:22
error_log молчит

Добавлено:
access_log
127.0.0.1 - - [15/Aug/2007:21:26:49 +0400] "POST /debug/authorize.php HTTP/1.1" 623 5

Но апач упорно присылает 500
Ajax-клиент теряется в догадках, что делать дальше )
Автор: Cheery
Дата сообщения: 15.08.2007 20:39
safo

Цитата:
error_log молчит

не верю.. смотрим конфиг апача, но это должно по умолчанию логироваться

и ты уверен, что апачем генерится? никакого прокси нет на пути или кэширования? оно может не понимать 600 код, которого нет в RFC
Автор: safo
Дата сообщения: 15.08.2007 20:42
В смысле error мне сыпет, если я чего налабаю. Но в этом скрипте ошибки все искорены, блин.
Прокси нет. У меня локально все стоит.
Автор: Cheery
Дата сообщения: 15.08.2007 20:44
safo

Цитата:
Но в этом скрипте ошибки все искорены, блин.
Прокси нет. У меня локально все стоит

в конфиге апача LogLevel какой стоит?
Автор: safo
Дата сообщения: 15.08.2007 20:50
warn
Автор: Cheery
Дата сообщения: 15.08.2007 20:51
safo

Цитата:
warn

тогда должны быть записи в error_log
может под другим названием пишет - проверять конфиг.
все ошибки сервера логируются
Автор: safo
Дата сообщения: 15.08.2007 20:52
Тогда чего он в лог пишет не то, что отдает?
Автор: Cheery
Дата сообщения: 15.08.2007 20:56
safo

Цитата:
Тогда чего он в лог пишет не то, что отдает?

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

поставь сниффер или Live HTTP Headers для FF и смотри, что и как шлется
Автор: safo
Дата сообщения: 15.08.2007 21:05
Я вижу заголовки, которые приходят в браузер. Это 500.
Почему при этом в access_log не 500?
Значит апач не хочет отпускать такой хэдер.

Добавлено:
Кстати 404-я нормально уходит
Автор: Cheery
Дата сообщения: 15.08.2007 21:58
safo

Цитата:
Значит апач не хочет отпускать такой хэдер.

потому что он не соответствует действительности.. не мудри.. нет такого в http протоколе.
Автор: dacuan
Дата сообщения: 16.08.2007 11:36
safo

Цитата:
Я подобные скрипты уже обкатывал, все работало. Но это было на других серваках. А дома у меня отлуп

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

Цитата:
не мудри


Автор: safo
Дата сообщения: 16.08.2007 11:49
Вот, собсно, пришел к ребятам, апач 2. Все работает.
Скрипты будут работать у них, поэтому можно и помудрить...
Автор: dacuan
Дата сообщения: 16.08.2007 11:54
safo

Цитата:
Вот, собсно, пришел к ребятам, апач 2. Все работает.
Скрипты будут работать у них, поэтому можно и помудрить...

А через пол года ребята обновят софт на сервере и что тогда?
Автор: safo
Дата сообщения: 16.08.2007 13:16
Смысла менять софт, который удовлетворяет все потребности уже два года, нет. Я им тот же вопрос задал. Они сказали - не парься. Менять ничего не будут. А если и будут, тогда за отдельные деньги перепишем слой обработки ошибок
Кстати, обкатал через цепочки прокси (до фаерволов еще не дошел), пока нормально. Впринципе, даже если где-то вылезет 500 вместо установленной, будет предусмотрено поведение и в этом случае. Просто оно будет более туповатым.
Автор: Cheery
Дата сообщения: 16.08.2007 18:34
safo
а можно узнать смысл всего этого?? зачем ЭТО нужно для ajax?
Автор: safo
Дата сообщения: 21.08.2007 14:21
Вы имеете ввиду смысл обработки ошибок как таковой?
Ошибки надо обрабатывать всегда. И чем больший спектр охвачен, тем надежнее и адекватнее ведет себя приложение.

Произошел, например, сбой сессии. Фронт должен об этом знать, а не впадать в задумчивость или завершать работу. Более того он должен понимать, что это не ошибка соединения с базой данных, например или неправильный ввод пользователя. Поэтому он начнет пытаться переустановить сессию сам или с помощью юзера. Кроме того фронт может еще работать и работать, задач множество помимо сессии.

Вопрос. Как ему об этом сообщить?
Автор: dacuan
Дата сообщения: 21.08.2007 14:49
safo

Цитата:
Вы имеете ввиду смысл обработки ошибок как таковой?

Имеется в виду смысл настолько извращенно организовывать обработку ошибок.


Цитата:
Вопрос. Как ему об этом сообщить?

Элементарно. Например, в случае ошибки скрипт отдает примерно такой XML:

Код: <error>
<code>123</code>
<message>Ошибка подключения к БД</message>
</error>
Автор: safo
Дата сообщения: 21.08.2007 15:33

Цитата:
Код:<error>
<code>123</code>
<message>Ошибка подключения к БД</message>
</error>

Все это отсылается с заголовком 200, так как ошибки HTTP не произошло, а ошибки приложения должны обрабатываться другим способом.


Я делал совсем недавно так как вы написали.
Издержки:
Собирать корректно на стороне сервера XML
Вместе с XML передается много ненужной информации
Её нужно парсить на клиенте
Обработчик ответа постепенно становится монстроидальным

В моем случае:
Об ошибке узнает транспорт и направляет в специфический обработчик
Параллельно вместе с ошибкой возможна передача JSON объектов
В случае нормального ответа требуется только заголовок со статусом 200
Издержек нет
Код становится более упорядоченым


Цитата:
Имеется в виду смысл настолько извращенно организовывать обработку ошибок.


Да, что Вы так переживаете? Если Вы считаете, что это извращение, то ради бога. Я пришел к этому не сразу, может и Вам понравится. А на HTTP-протокол я не посягаю.

Автор: dacuan
Дата сообщения: 21.08.2007 16:21
safo

Цитата:
Собирать корректно на стороне сервера XML

Это сложно?!!!!!!!!

Цитата:
Вместе с XML передается много ненужной информации
Её нужно парсить на клиенте

Откройте для себя jQuery. Разбор приведенного мной XML делается в две строки:

Код: var code = $("code", xml).text();
var message = $("message", xml).text();
Автор: safo
Дата сообщения: 21.08.2007 17:01
Понятно...
Мне как-то один чел доказывал, что использовать XML при передаче данных - это извращение. Вы из той же оперы только наоборот. И в голову Вам ничего уже не придет, потому как погрязли в спецификациях и всегда недовольны всякими вольностями.


Цитата:
Тогда будьте добры, покажите в спецификации что означает ошибка с кодом 600.


Такой ошибки нет.
Я не участвовал в разработке спецификации. Может Вы считаете данный протокол верхом совершенства? А что за ошибка 12029? Можете ответить?
Автор: Cheery
Дата сообщения: 21.08.2007 17:04
safo
давайте без наездов.

Цитата:
Может Вы считаете данный протокол верхом совершенства? А что за ошибка 12029? Можете ответить?

не занимайтесь глупостями.
не хотите - не следуйте правилам.. но тогда вам никто и не общает, что ваш код будет везде правильно работать. что и происходит.

или вам кажется, что RFC придумали для красоты?
если бы каждый писал как хочет без соблюдения стандартов, то ничего бы толком не работало.
Автор: safo
Дата сообщения: 21.08.2007 19:12
Cheery

К Вам отношусь с уважением. Но, хочу обратить внимание на нестандартное поведение dacuan

Впечатление, что я его девушку пригласил в кабак, а он мне объясняет, какэто нехорошо.
Я в нескольких постах пытался смягчить ситуацию, но "ревнивец" стоял на своём.
Сорри за оффтоп.

Цитата:
не занимайтесь глупостями

Вопрос не из области фантастики, если Вы так подумали. Те, кто занимается асинхронными интерфейсами, знают, что это за ошибка. Вот и хочу услышать ответ.

dacuan

Ответа пока нет на мой вопрос. Он имеет непосредственное отношение к асинхронному взаимодействию и к обработке ошибок. Так, что жду...
Автор: Cheery
Дата сообщения: 21.08.2007 22:33
safo

Цитата:
Вопрос не из области фантастики, если Вы так подумали.

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

по нормальному должна быть инкапсуляция сообщения об ошибке внутри тела ответа.
или в доп. нестандартных заголовках, которые и можно добавлять.
но не менять стандартные.
пример
header("my_error:600");
добавит заголовок, который не нарушит обмен.
Автор: dacuan
Дата сообщения: 22.08.2007 09:32
safo
Вы как ребенок, честное слово.


Цитата:
А что за ошибка 12029?

Это что, попытка задавить интеллектом или кризис эрудиции? Особенно поравилось вот это:


Цитата:
Ответа пока нет на мой вопрос. Он имеет непосредственное отношение к асинхронному взаимодействию и к обработке ошибок. Так, что жду...

Судя по всему подразумевается, что я либо буду цитировать ман, либо дико извиняться за своюю безграмотность. Вынужден вас огорчить, ответ подскажет Google. Согласитесь, довольно глупо устраивать викторины на форуме программистов.


Цитата:
Но, хочу обратить внимание на нестандартное поведение dacuan

И что же в моем поведении нестандартного? Попытка убедить супер-программиста-нашедшего-крутое-решенение-для-несуществующей-проблемы в том, что его решение ущербно? Или настойчивость в своем стремлении?


Цитата:
Впечатление, что я его девушку пригласил в кабак, а он мне объясняет, какэто нехорошо.
Я в нескольких постах пытался смягчить ситуацию, но "ревнивец" стоял на своём.

Довольно настандартный ассоциативный ряд. Вы хотите поговорить об этом?

Предлагаю дальнейший наш диалог перевести в приват и не засорять тему. Все равно для окружающих в нем нет ничего интересного.
Автор: safo
Дата сообщения: 22.08.2007 14:04

Цитата:
header("my_error:600");
добавит заголовок, который не нарушит обмен


Очень хорошее решение. Но нужно еще и заголовок ковырять.
Еще один плюс, который я не отметил. Это быстрая диспетчеризация. В случае разбора XML это дополнительные тормоза. Даже если код парсинга состоит из двух строк работа за кулисами происходит нехилая (плюс еще разворачивание XML при поступлении ответа). Стоит это попробовать на медленных машинах и сразу будет заметна разница.


Цитата:
другой софт должен нормально реагировать


Другого не будет.

dacuan


Цитата:
довольно глупо устраивать викторины на форуме программистов

Кто начал викторину? Действительно не стыдно Вам?


Цитата:
Все равно для окружающих в нем нет ничего интересного


Даже Вам интересно стало.

Собсно, на вопрос темы ответа так и небыло, зато поделился по-человечески, может и не "супер-пупер-крутым-решением", но имеющим право на жизнь. Как всегда, пришел крутой программист, перевел тему на свою колокольню, и давай учить сетевым протоколам. Офф-топ полный.
Автор: dacuan
Дата сообщения: 22.08.2007 14:41
safo

Цитата:
Кто начал викторину? Действительно не стыдно Вам?

Какая викторина? Вопрос про наличие 600-го заголовка? Это была не проверка Ваших знаний, а указание на то, что Вы вышли за границы спецификации, о чем Вы сами догадались, столкнувшись со сложностями. Но Вы с упорством пытаетесь доказать правильность своего метода, изначально зная об обратном.


Цитата:
Даже Вам интересно стало.

Интересно что, Ваш метод или личные препирательства? Если первое, то уверяю Вас, что это не так, если второе, то милости прошу в приват.


Цитата:
Собсно, на вопрос темы ответа так и небыло, зато поделился по-человечески, может и не "супер-пупер-крутым-решением", но имеющим право на жизнь.

Вопрос звучит примерно так: "Я поменял конденсатор на сетевой плате на более надежный и теперь она не работает с моим домашним свчем. Но у заказчика та же плата работает и даже показывает большую скорость чем раньше. Круто?"
В действительно считаете это адекватным подходом или нужны еще объяснения?

Страницы: 12

Предыдущая тема: Проблема з SOAP


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.