Raketenwilli: Nachträge und ein Problem mit dem alten mod_cgi +Fazit

Beitrag lesen

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.