PUT 방식 지원

PHP는 일부 클라이언트가 서버에 파일을 저장하는 데 사용하는 HTTP PUT 방법을 지원합니다. PUT 요청은 POST 요청을 사용한 파일 업로드보다 훨씬 간단하며 다음과 같습니다.

PUT /path/filename.html HTTP/1.1

이것은 일반적으로 원격 클라이언트가 웹 트리에 /path/filename.html과 같은 내용을 저장하기를 원한다는 것을 의미합니다. Apache나 PHP가 자동으로 모든 사람이 웹 트리에 있는 파일을 덮어쓰도록 하는 것은 좋은 생각이 아닙니다. 따라서 이러한 요청을 처리하려면 먼저 웹 서버에 특정 PHP 스크립트가 요청을 처리하기를 원한다고 알려야 합니다. Apache에서는 Script 지시문을 사용하여 이 작업을 수행합니다. Apache 구성 파일의 거의 모든 위치에 배치할 수 있습니다. 일반적인 장소는 <Directory> 블록 내부 또는 아마도 <VirtualHost> 블록 내부입니다. 다음과 같은 줄은 트릭을 수행합니다.

Script PUT /put.php
                

이것은 Apache가 이 행을 put.php 스크립트에 넣은 컨텍스트와 일치하는 URI에 대한 모든 PUT 요청을 보내도록 지시합니다. 물론 이것은 .php 확장자에 대해 PHP가 활성화되어 있고 PHP가 활성화되어 있다고 가정합니다. 이 스크립트에 대한 모든 PUT 요청의 대상 리소스는 업로드된 파일의 파일 이름이 아니라 스크립트 자체여야 합니다.

PHP를 사용하면 put.php에서 다음과 같은 작업을 수행할 수 있습니다. 이렇게 하면 업로드된 파일의 내용이 서버의 myputfile.ext 파일에 복사됩니다. 이 파일 복사를 수행하기 전에 몇 가지 검사를 수행하거나 사용자를 인증할 수 있습니다.

예제 #1 HTTP PUT 파일 저장

                  
<?php
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://input", "r");

/* Open a file for writing */
$fp = fopen("myputfile.ext", "w");

/* Read the data 1 KB at a time
   and write to the file */
while ($data = fread($putdata, 1024))
  fwrite($fp, $data);

/* Close the streams */
fclose($fp);
fclose($putdata);
?>