Suporte
ao
método
PUT
O
suporte
ao
método
PUT
mudou
entre
PHP
3
e
PHP
4
.
No
PHP
4
,
deve
se
usar
a
entrada
padrão
para
ler
os
conteúdos
de
um
PUT
.
Exemplo
18-4
.
Salvando
arquivos
HTTP
PUT
com
o
PHP
4
?php
/
*
PUT
data
vem
do
stdin
stream
*
/
$putdata
=
fopen(
"php
:
/
/stdin"
,"r")
;
/
*
Abre
um
arquivo
para
escrita
*
/
$fp
=
fopen("myputfile.ext"
,"w")
;
/
*
Lê
os
dados
1KB
de
cada
vez
e
escreve
no
arquivo
*
/
while
($data
=
fread($putdata,1024)
)
fwrite($fp,$data)
;
/
*
Fecha
os
streams
*
/
fclose($fp)
;
fclose($putdata)
;
?
|
|
Nota
:
Toda
a
documentação
abaixo
aplica-se
ao
PHP
3
somente
.
PHP
prove
suporte
para
o
método
HTTP
PUT
usado
por
clientes
como
Netscape
Composer
e
W3C
Amaya
.
Requisições
PUT
são
muito
mais
simples
do
que
o
upload
de
arquivo
e
se
parecem
com
isto
:
Isto
normalmente
indica
que
o
cliente
remoto
gostaria
de
salvar
o
conteúdo
que
se
segue
como
:
/
path
/
filename.html
na
sua
arvore
web
.
É
obvio
que
não
é
uma
boa
idéia
para
o
Apache
ou
o
PHP
automaticamente
permitir
que
todos
possam
sobrescrever
arquivos
na
sua
arvore
web
.
Então
,
para
manusear
este
tipo
de
requisição
você
tem
primeiro
que
dizer
ao
seu
servidor
web
que
você
quer
que
um
certo
script
PHP
cuide
da
requisição
.
No
apache
você
faz
isto
com
a
diretiva
Script
.
Pode
ser
colocada
praticamente
em
qualquer
lugar
do
seu
arquivo
de
configuração
do
Apache
.
Um
lugar
comum
é
dentro
de
um
bloco
Directory
ou
talvez
dentro
de
um
bloco
Virtualhost
.
Uma
linha
como
esta
deve
fazer
o
truque
:
Isto
diz
para
o
apache
enviar
todas
as
requisições
PUT
que
estejam
no
contexto
que
você
colocou
esta
linha
para
o
script
put.php
.
Isto
assume
,
é
claro
,
que
você
tem
o
PHP
ativado
para
a
extensão
.php
e
que
o
PHP
esta
ativo
.
Dentro
do
seu
arquivo
put.php
você
deve
então
fazer
algo
parecido
com
isto
:
Isto
deve
copiar
o
arquivo
para
a
localização
requisitada
pelo
cliente
remoto
.
Você
provavelmente
quer
fazer
alguma
checagem
e
/
ou
autenticar
o
usuário
antes
de
fazer
esta
copia
de
arquivo
.
O
único
truque
aqui
é
que
quando
o
php
vê
uma
requisição
com
o
método
PUT
ele
guarda
o
arquivo
carregado
em
um
arquivo
temporário
justo
como
se
fosse
manuseado
pelo
método
POST
.
Quando
a
requisição
termina
,
este
arquivo
temporário
é
apagado
.
Assim
seu
script
de
manuseio
do
PUT
tem
que
copiar
este
arquivo
em
outro
lugar
.
O
nome
deste
arquivo
temporário
esta
na
variável
$PHP_PUT_FILENAME
,
e
você
pode
ver
o
nome
de
arquivo
de
destino
sugerido
em
$REQUEST_URI
(
deve
variar
em
servidores
diferentes
do
apache
)
.
Este
nome
do
arquivo
de
destino
é
o
que
o
cliente
remoto
especificou
.
Você
não
tem
que
ouvir
o
cliente
.
Você
pode
,
por
exemplo
,
copiar
todos
os
arquivos
carregados
para
um
diretório
especial
de
uploads
.