PHP и OpenID = ошибка 500

Возникла действительно странная проблема.

Сценарий: PHP5.2.9, IIS7, PHP работает как FastCGI. У меня есть сайт test.concentratedtech.com. Нажмите «Войти», введите учетные данные OpenID, нажмите «Подтвердить» и немедленно получите ошибку 500.

Нажмите «Назад», повторно отправьте страницу, работает нормально.

Трассировка неудачного запроса IIS показывает два сообщения ниже. Эти сообщения, как правило, указывают на то, что все в порядке, чего, по-видимому, достаточно, чтобы вызвать ошибку. ВТФ.

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

ОДИН:

ModuleName FastCgiModule 
Data1 FASTCGI_RESPONSE_ERROR 
Data2 Successfully fetched 'http://concentrateddon.myopenid.com/': GET response code 200

ErrorCode 5 
ErrorCode Access is denied. (0x5) 

ДВА:

ModuleName FastCgiModule 
Notification 128 
HttpStatus 500 
HttpReason Internal Server Error 
HttpSubStatus 0 
ErrorCode 0 
ConfigExceptionInfo  
Notification EXECUTE_REQUEST_HANDLER 
ErrorCode The operation completed successfully. (0x0 

person Don Jones    schedule 06.04.2009    source источник


Ответы (1)


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

Я отключил отображение ошибок PHP (нормальная производственная настройка, но эта машина все еще находится в тестировании, поэтому ошибки отображались). Проблема ушла.

Я предполагаю, что ответ 200 ("ОК") каким-то образом регистрируется библиотекой Yadis OpenID как "ошибка". При отображении ошибки PHP выдал 500. Если отображение ошибки отключено, PHP просто смирился с этим и продолжает работать. Наверное.

ОБНОВЛЕНИЕ: На самом деле хитрость в том, что ошибка должна КУДА-ТО идти. Я отключил отображение ошибок и включил LOGGING ошибок (например, в журнал событий приложения Windows, но также может быть и в файл), и все в порядке.

person Don Jones    schedule 06.04.2009