Mailinglisten-Archive |
----- Original Message ----- From: "Thomas Richter" <php at wwedit.org> To: "deutschsprachige PHP-Mailingliste" <php at phpbar.de> Sent: Monday, December 01, 2003 7:40 PM Subject: [php] php als cgi version > Hallo, > > Folgendes Szenario: Ich habe in einer .htaccess Datei ein PHP Script als > ErrorDocument fuer Fehlercode 404 gesetzt. Dieses ErrorDocument > ermittelt mir an Hand einer URL, ob eine bestimmte Seite in der > Datenbank existiert und liefert dementsprechend diese Seite oder einen > Fehler zurueck. Zusaetzlich muss ich natuerlich den HTTP Header mit dem > Status Code schicken. Dafuer gibt es 2 Moeglichkeiten: > > 1. HTTP/1.1 200 OK ,bzw. HTTP/1.1 404 Not Found und > 2. Status: 200 ,bzw. Status: 404 > > Mein Problem ist, dass ich noch keine wirkliche Logik gefunden habe, wo > ich was zurueckliefern muss. Im PHP Manual steht nur die Randnotiz, dass > "HTTP/1.1 xxx" nur bei PHP 3 als Modul funktioniert, und sonst "Status: > xxx" benutzt werden muss. > > Allerdings sagt meine Erfahrung (so ein grosser Massenprovider, der > allen bekannt sein sollte), dass ich bei einer CGI Installation von > PHP4.2.?+ ebenfalls den "Status" header schicken muss... Hmm?. Fakt ist das sich bei CGI Scripten das Script selber um einen gueltigen Satzt header zukuemmern hat und nicht wie 'normal' der Webserver tut. Im Falle von PHP tut es das aber selber (auch bei CGI PHP). Was du nun evtl. willst ist diesen Header() zu ueberschreiben. Das wuerde ich dann aber testen wollen in dem man mal mit TELNET zugreift und guckt was dann kommt. telnet origin.takenet.de 80 Trying 194.15.93.173... Connected to origin.takenet.de. Escape character is '^]'. GET /php/test.php HTTP/1.0 Host: origin.takenet.de HTTP/1.1 400 Bad Request Date: Mon, 01 Dec 2003 19:37:58 GMT Server: Apache/2.0.46 (Unix) Status: 400 Content-Length: 0 Connection: close Content-Type: text/html; charset=ISO-8859-1 Connection closed by foreign host. Hmmm obwohl ich nen HTTP/1.0 request mache und auch nen 1.0 im Script sende ist der Responce nen 1.1. > Gibt es da eine Regel? Eine die logisch ist, und implemtierbar ist? Und > wenn die Regel besagt, dass es bei CGI Installationen gesendet werden > muss.... wie finde ich eigentlich raus, ob es sich um eine CGI Version > von PHP handelt? echo php_sapi_name(); http://www.php.net/php_sapi_name Gruss Joerg
php::bar PHP Wiki - Listenarchive