PUT-Unterstützung

Die Unterstützung der PUT-Methode hat sich zwischen PHP 3 und PHP 4 geändert . In PHP 4 sollten Sie den standard Input-Datenstrom benutzen , um die Inhalte eines HTTP PUT zu lesen .

Beispiel 18-4 . Speicher von HTTP PUT Dateien mit PHP 4

 
?php

 
/

 
*

 
PUT

 
Daten

 
kommen

 
in

 
den

 
stdin

 
Stream

 
*

 
/

 
$putdata

 
=

 
fopen(

 
"php

 
:

 
/

 
/stdin"

 
,"r")

 
;

 
/

 
*

 
Eine

 
Datei

 
zum

 
Schreiben

 
öffnen

 
*

 
/

 
$fp

 
=

 
fopen("myputfile.ext"

 
,"w")

 
;

 
/

 
*

 
Jeweils

 
1kB

 
Daten

 
lesen

 
und

 
in

 
die

 
Datei

 
schreiben

 
*

 
/

 
while

 
($data

 
=

 
fread($putdata,1024)

 
)

 
fwrite($fp,$data)

 
;

 
/

 
*

 
Die

 
Streams

 
schließen

 
*

 
/

 
fclose($fp)

 
;

 
fclose($putdata)

 
;

 
?





Anmerkung : Sämtliche untenstehende Dokumentation betrifft nur PHP 3 .

PHP unterstützt die HTTP PUT-Methode , wie sie von Clients wie Netscape Composer oder W3C Amaya benutzt wird . PUT-Anfragen sind weitaus unkomplizierter als ein Dateiupload und sehen etwa so aus :






Das würde normalerweise bedeuten , dass der entfernte Client den folgenden Inhalt als / path / filename.html im Webverzeichnisbaum speichert . Natürlich ist es keine gute Idee , dass PHP oder Apache jeden Benutzer beliebige Dateien überschreiben lassen . Um eine solche Anfrage bearbeiten zu können , muss der Webserver erst angewiesen werden , ein bestimmtes PHP-Skript für die Abarbeitung aufzurufen . Im Apache wird dies durch die Script - Direktive festgelegt . Sie kann fast überall in der Apache-Konfigurationsdatei platziert werden , gebräuchlich ist die Platzierung innerhalb einer Directory - oder Virtualhost - Sektion . Eine Zeile wie die folgende erledigt dies :






Diese Zeile legt fest , dass Apache alle PUT-Anfragen für URIs , die dem Kontext entsprechen , in dem diese Zeile steht , an das put.php Skript weiterleitet . Dies setzt natürlich voraus , dass PHP aktiv und für die .php-Dateierweiterung registriert ist .

Innerhalb der put.php-Datei könnte folgendes stehen :






Dies kopiert die Datei an den vom Client angegebenen Ort . Möglicherweise sollen vor dem Kopieren der Datei noch Überprüfungen und / oder Benutzerauthentifizierung stattfinden . Wenn PHP eine PUT-Anfrage erhält , wird die Datei genau wie bei der POST-Methode in einem temporären Verzeichnis gespeichert . Nach dem Abarbeiten der Anfrage wird die temporäre Datei gelöscht . Also muss das PHP-Skript , das die PUT-Anfrage bearbeitet , die Datei irgendwohin kopieren . Der Name der temporären Datei findet sich in der Variablen $PHP_PUT_FILENAME ; der Name der zu speichernden Datei steht in $REQUEST_URI (kann bei Nicht-Apache Webservern variieren ) . Dieser Zieldateiname wird vom Client festgelegt . Man kann den Client auch umgehen ; beispielsweise könnten alle hochgeladenen Dateien in ein spezielles Upload-Directory kopiert werden .