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

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);
?>