Christian Seiler: Apachemodul vs cgi: Performance, security, features?

Beitrag lesen

Hallo Olaf,

Habt Ihr Erfahrungen, wie weit Scripts angepasst werden müssen, um unter beiden Konzepten zu laufen?

Mit (normalem) CGI funktioniert das Auslesen der HTTP-Auth-Daten nicht (d.h. PHP_AUTH_USER / PHP_AUTH_PASS stehen nicht zur Verfügung; den über normale .htaccess-Authentifizierung übertragenen Benutzer kann man jedoch per REMOTE_USER auslesen).

Status-Header müssen anders gesetzt werden. Bei PHP als Modul muss bspw. Header('HTTP/1.1 301 Moved Permanently'); gemacht werden während bei PHP als CGI Header('Status: 301 Moved Permanently'); notwendig ist. Ich mache das immer über den Code:

function setzeStatusHeader ($header) {  
  if (strtolower(php_sapi_name()) == 'cgi') {  
    Header('Status: ' . $header);  
  } else {  
    Header($_SERVER['SERVER_PROTOCOL'] . ' ' . $header);  
  }  
}  
  
// ...  
  
setzeStatusHeader ('301 Moved Permanently');

Das fängt zwar nicht alles ab (d.h. andere Webserver könnte nochmal unterschiedliche Behandlung erwarten) - aber für den Apache klappt das ganz gut.

Viele Grüße,
Christian

--
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup