2015-03-10 7 views
5

Я запускаю PHP 5.4 на CentOS 7, и когда есть файл php, который выдает ошибку (либо исключение, либо синтаксическую ошибку), он возвращает статус HTTP 200 код вместо 500.Apache/PHP возвращает код состояния HTTP 200 на страницах ошибок

Как я могу получить его, чтобы вернуть ошибку сервера 500, когда PHP сталкивается с ошибкой?

Я пробовал смотреть другие сообщения Stackoverflow, и все они, похоже, указывают на решения по возврату вашего собственного кода ошибки 500 (который, я считаю, должен быть нормальным поведением PHP на его собственном уровне, без необходимости вручную запускать http header, согласно этой информации: PHP emitting 500 on errors - where is this documented?) Он также указывает на Xdebug как возможную проблему, но моя проблема сохраняется, даже когда я перестраиваю сервер без Xdebug.

Соответствующие настроек я являюсь:

  • display_errors: на
  • display_startup_errors: на
  • error_reporting: -1 (это вызывает все ошибки будут сообщены)
+1

Зачем вам это нужно? Ошибки Apache и ошибки php - это не одно и то же. –

+0

Но он, вероятно, справится с любым исключением PHP-версии таким образом, что PHP ответит «500» автоматически. –

+0

@Dagon Я говорю о кодах статуса http, обслуживаемых apache. Я пытаюсь получить поведение, когда ошибка PHP вызывает код состояния 500. –

ответ

7

По a PHP bug report, описанное здесь поведение объясняется тем, как установлено display_errors.

[2010-02-03 19:03 UTC] [email protected]

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

Таким образом, ответ на этот вопрос заключается в следующем:

  • Когда display_errors на это будет возвращать 200 всегда.
  • Когда display_errors выключен, он вернет 500.