Merry Christmas

PUT Method Support
PHP는 Netscape Composer나 W3C Amaya같은 클리이언트에 대해 HTTP PUT 방식(method)을 지원한다. PUT 요구(request)는 file upload보다 훨씬 쉽다. 단지 다음과 같이 하면 된다. :

PUT /path/filename.html HTTP/1.1

이것은 보통 원격 클라이언트가 보낸 내용을 웹 트리 밑의 /path/filename.html로 저장하라는 의미이다. 그런데 여러분의 웹 트리밑에 있는 파일들을 아무나 덮어 쓸 수 있다는 것은 Apache나 PHP에 있어서 확실히 좋지 않은 생각이다. 따라서 이와 같은 요구를 다루기 전에, 우선 웹 서버에게 이런 요구를 다루는 PHP 스크립트를 미리 지정해 주어야 한다. 아파치에서는 Script 지시자로 그 내용을 지정한다. 이 지시자는 Apache 설정 파일중의 어느 위치에 있어도 괜찮으나, 보통 <Directory> 블록 안이나 <Virtualhost> 블록 안에 위치하는 것이 일반적이다. 보통 다음과 같이 쓰여진다. :

Script PUT /put.php3

이것은 이 라인을 위치시킨 블록의 URI에 해당되는 모든 PUT 요구를 put.php3 스크립트에게 전달하라고 Apache에게 알려 준다. 물론 이 경우 .php3 확장자에 대하여 PHP설정이 완료되어 있고, PHP가 작동중이어야 한다.

put.php3 파일내에서는 보통 다음과 같이 사용할 수 있다. :

<? copy($PHP_UPLOADED_FILE_NAME,$DOCUMENT_ROOT.$REQUEST_URI); ?>

위의 명령은 해당 파일을 원격 클라이언트가 요청한 위치에 복사하는 것이다. 아마 여러분은 복사하기 전에 사용자를 확인하거나 파일을 검사하는 등의 기능을 원할 것이다. 여기서 알 수 있는 것은 PHP가 PUT-method의 요구를 받았을 때 File Upload 기능과 마찬가지로 임시 파일에 해당 내용을 저장한다는 것이다. 즉, 요구가 끝나게 되면 임시파일은 지워진다. 따라서 PUT을 다루는 PHP 스크립트는 해당 파일을 어디 다른 곳에 복사해 두어야 한다. 임시파일의 이름은 $PHP_PUT_FILENAME 이라는 변수에 저장되고, $REQUEST_URI 변수에 클라이언트에서 보내온 저장할 파일의 경로와 이름이 저장된다.(Apache가 아닌 웹서버에서는 모양이 조금 달라진다.) 물론 여러분은 이 경로명과 파일명이 아닌 전혀 다른 위치에 다른 파일명을 사용할 수도 있다.



-------------------------
|                       |
|   PUT/DELETE method   |
|                       |
-------------------------

http://www.test.comr

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

PUT /test.txt HTTP/1.1
Host: 203.249.94.26
Content-Length: 5
testa


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DELETE /test.txt HTTP/1.1
Host: www.test.com

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

: