2015-03-10 20 views
5

Używam PHP 5.4 na CentOS 7 i gdy jest plik php, który zgłasza błąd (albo wyjątek, albo błąd składni), zwraca status HTTP 200 kod zamiast 500.Apache/PHP zwraca kod stanu HTTP 200 na stronach błędów

Jak mogę uzyskać to, aby zwrócić błąd 500 serwera, gdy PHP napotka błąd?

Próbowałem, patrząc na inne posty Stackoverflow, i wszystkie wydają się wskazywać na rozwiązania wokół zwracania własnego kodu błędu 500 (które moim zdaniem powinny być normalne zachowanie PHP na własną rękę bez mnie konieczności ręcznego ognia nagłówek http, zgodnie z tą informacją: PHP emitting 500 on errors - where is this documented?) Wskazuje również na Xdebug jako na możliwy problem, ale mój problem nie ustąpi, nawet gdy odbuduję serwer bez Xdebug.

Odpowiednie ustawienia mam to:

  • display_errors: na
  • display_startup_errors: na
  • error_reporting: -1 (ta powoduje wszystkie błędy należy zgłaszać)
+1

dlaczego chcesz? Błędy Apache i błędy php to nie to samo –

+0

Ale prawdopodobnie poradzi sobie z każdym wyjątkiem od strony PHP w taki sposób, że PHP automatycznie odpowiada '500'. –

+0

@Dagon Mówię o kodach stanu http obsługiwanych przez Apache. Próbuję uzyskać zachowanie, w którym błąd PHP wyzwala kod statusu 500. –

Odpowiedz

7

Według a PHP bug report, zachowanie opisane tutaj wynika z ustawienia wartości display_errors.

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

Powodem błędy wyświetlania musi być włączony z, dlatego wyświetlane błędy generują wyjście i wyjście powoduje nagłówki wyślij. Obawiam się, że nie możemy wiele z tym zrobić.

Więc odpowiedź na pytanie brzmi, że:

  • Kiedy display_errors jest powróci 200 zawsze.
  • Gdy display_errors jest wyłączone, zwróci 500.
Powiązane problemy