Im Apache-Handuch steht fast nichts. Aber in der RFC3875 für CGI, dort bei Punkt 3.6.6.
Wenn man allen Ernstes PHP als CGI mit dem Apache und mod_cgi benutzen sollte, dann hat man ein Problem:
http_response_code(404)
bewirkt nichts.- Die komplette Funktion header() ist völlig nutzlos.
HTTP/1.1 404 Not Found
in den Header zu schreiben führt zu einem Error 500. (Serverfehler)- Aber
status: 404
statisch in den Header zu schreiben (oder dort per echo auszugeben) funktioniert…
Alles mit und ohne ob_start()
getestet.
Mit „PHP 8.1 als cgi-fcgi“ hingegen funktionieren
http_response_code(404)
header(HTTP/1.1 404 Not Found)
header('status: 404')
mit jeweils dem selben positiven Ergebnis.
Mit „PHP 8.1 als Modul“ funktionieren:
http_response_code(404)
header(HTTP/1.1 404 Not Found)
Da jetzt das gezeigte Ausführen von PHP innerhalb des oldscool
-Modules mod_cgi
allenfalls experimentellen Charakter hat (und ergo wirklich alles andere als die Regel ist) würde ich bei den beiden zuletzt genannten Möglichkeiten bleiben, die mit PHP als Modul aber auch mit cgi_fcgi
tun, was sie sollen.