2012-01-11 7 views
5

Zazwyczaj podczas wysyłania nagłówek stanu HTTP z PHP, jeden wyśle ​​nagłówek HTTP tak:Nadal konieczne jest użycie "Status: 404 Not Found" dla FCGI?

header("HTTP/1.0 404 Not Found"); 

Jednak PHP manual mówi, że dla gospodarzy fcgi, należałoby wysłać „Stan” nagłówek jest następnie przekształcone w nagłówku HTTP przez moduł fcgi:

header("Status: 404 Not Found"); 

Używam apache 2.2 z PHP przy użyciu mod_fcgi na Windows 7 maszynie i wysyłanie nagłówka przy użyciu tylko header("HTTP/1.0 404 Not Found"); wydaje się działać prawidłowo.

Czy to się ostatnio zmieniło? Czy nadal muszę wysłać nagłówek Status dla hostów FCGI? Czy ktokolwiek może to potwierdzić na innych platformach (solaris, linux) i innych serwerach sieciowych (nginx, lighttp)?

Odpowiedz

3

Nie sądzę, że musisz użyć nagłówka stylu "Stan", chyba że masz włączoną opcję cgi.rfc2616_headers. .

opis tej opcji jest http://php.net/manual/en/ini.core.php

„opowiada PHP, jaki rodzaj nagłówków do korzystania przy wysyłaniu odpowiedzi HTTP kod Jeśli jest ustawione 0, PHP wysyła status: nagłówek, który jest obsługiwany przez Apache i inne serwery WWW.Jeśli ta opcja jest ustawiona na 1, PHP będzie wysyłać »nagłówki zgodne z RFC 2616. Pozostaw to ustawienie 0, chyba że znasz , co robisz."

Zasadniczo wysyłacie nagłówki stylu HTTP do PHP, a następnie PHP konwertuje je do nagłówków stylu "Status" tam, gdzie to konieczne. Wygląda na to, że przez lata pojawiały się różne błędy, które albo zostały niepoprawnie przekonwertowane, albo wysłano wiele nagłówków "statusu" naraz - jednak wszystkie te błędy wydają się być teraz naprawione. Więc myślę, że jesteś bezpieczny, ustawiając nagłówki stylu HTTP i pozwalając PHP je konwertować.

Również przetestowałem i wysłałem nagłówek ("HTTP/1.0 404 Not Found"); działa dobrze na moim środowisku deweloperskim przy użyciu FastCGI