Назад | Перейти на главную страницу

500 - Внутренняя ошибка сервера НЕ появляется в error.log (или access.log)

Я пытаюсь отследить ошибку или неправильную конфигурацию на нашем новом веб-сервере Debian, на котором запущен PHP / MySQL управляемый веб-сайт с Apache. Я не буду утомлять вас кровавыми подробностями, просто хочу спросить:

Кто-нибудь когда-либо наблюдал, как веб-браузер получает сообщение "HTTP 500 внутренняя ошибка сервера"в то время как в журнале ошибок и доступа apache НИЧЕГО не отображается? В настоящее время речь идет не о деталях, а просто о том, что я считаю, что это странное поведение уже должно привести в правильном направлении, поскольку я не верю, что существует много возможностей, где это может произойти вообще.

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

Любые комментарии / идеи приветствуются,

Римский.

РЕШЕНО: Увы, есть балансировщик нагрузки, управляющий сервером, и балансировщик нагрузки был настроен так, чтобы останавливать соединения после 10 секунд бездействия или около того. Теперь проблема решена. Причина, по которой 500 не отображается в журнале ошибок apache, заключается в том, что соединение прервала «внешняя» система (балансировщик нагрузки), а не сам сервер. Спасибо всем за идеи и помощь! Надеюсь, когда-нибудь кто-то еще найдет это поучительным.

С уважением, Роман.

Это может быть проблема с вашим Apache LogLevel директива или это может быть связано с PHP ошибка выполнения обработка.

Другая возможность: ищите @ в ваших исходных файлах.

Выписка из документации php

Предупреждение
В настоящее время префикс оператора контроля ошибок «@» даже отключает сообщение об ошибках для критических ошибок, которые прерывают выполнение скрипта. Среди прочего, это означает, что если вы используете «@» для подавления ошибок в определенной функции, и она либо недоступна, либо была введена с ошибкой, сценарий сразу же умрет, без указания причины.

Кредиты идут Люку М, что спасло меня и многих пользователей CodeIgniter.

Он будет отображаться в журнале ошибок apache только в том случае, если ошибка возникает в коде apache, но вы все равно должны увидеть ее в журнале доступа (с кодом состояния 500), если статус установлен в коде PHP. Хотя могут быть случаи, когда процессы PHP полностью падают (хотя это очень редко).

NB это также может произойти при подключении через прокси, и прокси закручивается.

500 поступает с другого хоста через что-то встроенное в документ? Возможно, вы получили свой CSS или что-то подобное из другого ящика? Также попробуйте добавить Журнал ошибок Директива. Используйте инструменты Firebug или Chrome для веб-разработки, чтобы узнать, откуда берется 500, может даже быть рекламой или чем-то еще на странице.

Также попробуйте что-то вроде CURL или LWP, чтобы сделать запрос, посмотрите, что такое заголовки ответа, например:

lwp-request -m HEAD -eSsd http://www.google.com/
HEAD http://www.google.com/ --> 200 OK
Cache-Control: private, max-age=0
Connection: close
Date: Tue, 19 Apr 2011 15:56:26 GMT
Server: gws
Content-Type: text/html; charset=ISO-8859-1
Expires: -1
Client-Date: Tue, 19 Apr 2011 15:56:26 GMT
Client-Peer: 74.125.91.99:80
Client-Response-Num: 1
Client-Transfer-Encoding: chunked
Set-Cookie:
REF=ID=b4ac3801dfbd939c:FF=0:TM=1303228586:LM=1303228586:S=nU_H2eC3zcLbTKfb;
expires=Thu,18-Apr-2013 15:56:26 GMT; path=/; domain=.google.com Set-Cookie:
NID=46=dsepCUy0iW9MDD7AkaP1-P4INDfRLTXz7l_TchQFzCGqtP4GU1EFbpn7K-sKq-ujNhpnR
Br8Cqgdyd3LyC3mxsRDOCCFoOn2OutZad7VWFs5erWVh0UNgEgkQJGqRe-; expires=Wed, 19-Oct-2011
15:56:26 GMT; path=/; domain=.google.com; HttpOnly
X-XSS-Protection: 1; mode=block

edit: GF обнаружил опечатку.

У меня была такая же проблема, и она была вызвана настройкой отчетов об ошибках в PHP. Хотя у меня была E_ERROR | E_WARNING | E_PARSE в моем .htaccess PHP не записывал фатальную ошибку PHP в журнал ошибок. Всего 500 в журнале доступа. Была сгенерирована даже половина страницы (пока я не вызвал функцию с этой ошибкой).

Для проектов Symfony не забудьте проверить приложение / журналы

Вы можете найти более подробную информацию по этому вопросу:
https://stackoverflow.com/questions/18577003/how-to-debug-500-error-in-symfony-2

Кстати, другие фреймворки или CMS могут иметь подобное поведение.