Herhangi bir hata koşulu durumunda otomatik olarak 500 PHP set HTTP durum kodunu nasıl yapılır?

0 Cevap php

PHP 5.3.2 ile Apache 2.2.15 çalıştırıyorum, 'display_errors' engelli 'display_startup_errors' engelli 'log_errors' sağladı.

Benim kurulumda (bu yüzden bir norm düşünün), PHP iyi olduğunu, ölümcül hataları durdurur, ve sets HTTP status code to 500. Ölümcül hataları E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR ve muhtemelen, E_RECOVERABLE_ERROR (kendimi tetiklemek olamaz, bu kadar kolay ne kontrol edemez) içerir. Script sözdizimi hataları içeren ve / veya çalışma yapmak gerekiyordu ne yapmak başarısız olursa tabii ki, öyle - Bunu ben bunu yapmak için doğru şey olduğunu düşünüyorum çünkü, 500 kodunu ayarlamak olmadığını iyi bir fikir olduğunu düşünüyorum Bir sunucu hatası, biz sunucu PHP kısmını düşünün.

Now, here is the important part:

Her neyse, ben şimdi daha iyi hatalarını izlemek için XDebug yüklü, ama ben, the HTTP status code is always 200 betik ölümcül hataları daha önce olduğu gibi iptal olsa bile, artık olursa olsun hata olduğunu görebilirsiniz. Bu benim müşteri kırar HTTP üzerinden Apache / PHP 'konuşur': |

Ayrıca, Açık / 1 display_errors ayarı, PHP artık 500 HTTP durum kodunu ayarlayabilir ve yukarıda xdebug gibi sergiler aynı davranışı yapar.

Burada güvenilir durum kodu davranışları üzerinde çok bağımlı değilim, ve bu tüm bu .. bazı tesadüftü tür veya hava gibi rastgele ya da ben bir şey eksik inanmak beni neden?

UPDATE

There is a blog post which oulines the issue: http://talideon.com/weblog/2008/02/php-errors.cfm

Bana gelince, ben ilk etapta kötü davranışa neden ne gibi görerek, XDebug devre dışı bıraktık. Ben sadece yığın yine izleme için kullanılan ve şimdi yerine bunun için bir özel hata işleyicisi kullanın. Ayrıca, bağlantılı makale 2008'den itibaren, görünüşe PHP does otomatik olarak 500 HTTP durum kodu ayarlamak bu gündür. O yüzden burada yok. Xdebug olmadan, tabii ki.

0 Cevap