PHP 404 hata sayfası içeriğini görüntülemek olmaz

6 Cevap php

Benim Windows / IIS / PHP host üzerinde özel 404 hata sayfaları uygulanmasında bir sorun yaşıyorum. Ben başlığındaki 404 durum mesajı göndermek çalıştığınızda zaman, hiçbir içerik müşteriye gönderilir ve boş bir sayfa yerine görüntülenir.

İşte kullanıyorum çok basit bir script:

<?php
  header('HTTP/1.1 404 Not Found');
  header('Status: 404 Not Found');
  var_dump(headers_list());
?>

Benim dev makine üzerinde (bir tarayıcıda görüntülenir) çıkışı

array(2) { [0]=>  string(23) "X-Powered-By: PHP/5.2.6" [1]=>  string(21) "Status: 404 Not Found" }

Benim host çıkış yok. Ben, ne olursa olsun içerik PHP ile yankılandı ne bir boş sayfa ama bir şey üretmek gibi görünüyor, veya normal HTML olarak aşağıda yer olamaz olsa PHP işleme ör günlüğü, veritabanı vb normal devam yazıyor.

Herkes sorunun ne olabileceğini önerebilirsiniz ya da nasıl çözmek için?

6 Cevap

PHP CGI aracılığıyla çalıştırmak için ana yapılandırılmış ise, (kötü bir şey olduğunu 200 Tamam, yalan ve geri dönen hariç) IIS 404 hata sayfaları oluşturmak mümkün olabilir. Kesinlikle benim CGI 404 hataları tarayıcılar aracılığıyla izin vermek için IIS 4-6,0 ikna yapamaz oldum.

Genellikle PHP zaten CGI çalıştırmak istemiyorum, diğer ilgili sorunlar hem de bu yavaş olmak vardır. (Ben bunu denedim değil gibi ben bu özel sorunu çözer teyit olamaz olsa) IIS, PHP ISAPI uzantısı tercih edilmelidir.

'Boş sayfa' (0) alacağı hata mesajları gizleme error_reporting gibi kokuyor. Belki orada başlıklarından önce bazı çıkış ve bir hata yükseltir. Olduğunu kontrol edin.

Ne PHP etiketlerinin sonra metin koyarsanız?

Ayrıca, komut dosyası, apache hata günlüklerini kontrol senaryo üzerinde php-l çalışan veya error_reporting dönüm ve üzerinde display_errors olsun, ev sahibi üzerinde erroring olmadığından emin olun.

Linux üzerinde PHP 5.2.6 ile aynı sorun var. Ben ilk 8109 byte web sunucusu tarafından basılan olmadığını bulmak.

IE6 özel hata sayfaları sayar < Uzunluğunda 512 bayt. Bu sorunun bir açıklama olabilir, ama muhtemelen yine de birden fazla tarayıcıda test ettik.

Ev sahibi PHP ile anında başlıklarını değiştirmek için izin verdiğini kontrol edin. (301, içerik-tipi) Diğer başlıklar ince olsa Benim ev sahibi, beni PHP ile 404 başlığını ayarlamak için izin vermez.

Benim tavsiyem HTTP/1.1 404 header kendinizi ayarlamak ve web sunucusu sizin için bunu yapmak izin vermemektir.

Geleneksel olarak, bu web sunucusu almak ve HTTP/1.0 veya 1.1 404 Bulunamadı başlığına dönüşmesi gerektiğini Durum başlığında aracılığıyla yapılır.

(Yan Not: Status başlık gerçek bir HTTP başlığı değildir ve sadece sunucu kendisi için bir app bilgi iletişim kurmak için kullanılır.)