phpbar.de logo

Mailinglisten-Archive

[php] php als cgi version

[php] php als cgi version

Joerg Behrens behrens at takenet.de
Mon Dez 1 20:42:25 CET 2003


----- 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