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
.