PUT-Unterstützung
PHP unterstützt die HTTP-PUT-Methode, welche von einigen Clients verwendet wird, um Dateien auf dem Server zu speichern. PUT-Anfragen sind weitaus unkomplizierter als ein POST-Dateiupload und sehen etwa so aus:
PUT /path/filename.html HTTP/1.1
Das würde normalerweise bedeuten, dass der Client den nachfolgenden Inhalt
als /path/filename.html auf dem Server speichern
will. Natürlich ist es keine gute Idee, dass PHP oder Apache jeden
Benutzer beliebige Dateien überschreiben lässt. Um eine solche Anfrage
bearbeiten zu können, muss der Webserver erst angewiesen werden, ein
bestimmtes PHP-Skript für die Abarbeitung aufzurufen. In Apache wird dies
durch die Direktive Script festgelegt. Sie kann fast
überall in der Apache-Konfigurationsdatei platziert werden, gebräuchlich
ist die Platzierung innerhalb eines <Directory>
-
oder Virtualhost
-Abschnitts. Eine Zeile wie die
folgende erledigt dies:
Script PUT /put.php
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.
In der put.php könnte anschließend ein Code wie der folgende verwendet werden. Dieser würde den Inhalt der hochgeladenen Datei in die Datei myputfile.ext auf dem Server kopieren.
Beispiel #1 Speichern von HTTP-PUT-Dateien
<?php
/* PUT Daten kommen in den stdin Stream */
$putdata = fopen("php://input","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);
?>