對 PUT 方法的支援PHP 3 和 PHP 4 對 PUT 方法的支援有所不同。在 PHP 4 中,必須使用標準的輸入流來讀取一個 HTTP PUT 的內容。
PHP 提供對諸如 Netscape Composer 和 W3C Amaya 等用戶端使用的 HTTP PUT 方法的支援。PUT 請求比檔案上傳要簡單的多,它們一般的形式為: 這通常意味著遠端用戶端會將其中的 /path/filename.html 存儲到 web 目錄樹。讓 Apache 或是 PHP 自動容許所有人覆蓋 web 目錄樹下的任何檔案顯然是很不明智的。因此,要處理類似的請求,必須先告訴 web 伺服器需要用特定的 PHP 腳本來處理該請求。在 Apache 下,可以用 Script 選項來設定。它可以被放置到 Apache 配置檔中幾乎所有的位置。通常我們把它放置在 <Directory> 區功能變數或是 <Virtualhost> 區功能變數。可以用如下一行來完成該設定: 這將告訴 Apache 將所有對 URI 的 PUT 請求全部傳送到 put.php 腳本,這些 URI 必須和 PUT 指令中的內容相符合。當然,這是建立在 PHP 支援 .php 副檔名,並且 PHP 已經在運行的假設之上。 在 put.php 檔案中,可以作如下動作:
這將會把檔案複製到遠端用戶端請求的位置。可能希望在檔案複製之前進行一些檢查或是對會員認證之類的動作。這裡唯一的問題是,當 PHP 接受到 PUT 方法的請求時,它將會把上傳的檔案儲存到和其它用 POST 方法處理過的檔案相同的臨時目錄。在請求結束時,暫存檔案將被移除。因此,用來處理 PUT 的 PHP 腳本必須將該檔案複製到其它的地方。該暫存檔案的檔案名被儲存在變量 $PHP_PUT_FILENAME 中,也可以通過 $REQUEST_URI 變量獲得建議的目的檔案名(在非 Apache web 伺服器上可能會有較大的變化)。該目的檔案名是由遠端用戶端特殊的。也可以不聽從改用戶端的訊息,而把所有上傳的檔案存儲到一個特殊的上傳目錄下。 | ||