Forum und email
Podpora metody PUT

Podpora metody PUT

PHP poskytuje podporu pro HTTP PUT metodu používanou klienty jako Netscape Composer nebo W3C Amaya. Požadavky s metodou PUT jsou mnohem jednodušší než upload souborů a vypadají přibližně takto:

PUT /path/filename.html HTTP/1.1

Toto by normálně znamenalo, že by chtěl klient uložit obsah, který následuje za názvem /path/filename.html, do svého webového stromu. To samozřejmě není dobrý nápad, aby Apache nebo PHP automaticky nechal kohokoli přepsat jakékoli soubory ve stromě. Takže, pro zpracování takového požadavku je třeba nejdřív řici vašemu WWW serveru, že chcete požadavek zpracovávat konkrétním PHP skriptem. U serveru Apache se to provede direktivou Script. Může být umístěna kdekoli v konfiguračním souboru Apache. Častými místy jsou bloky <Directory> a <Virtualhost>. Použije se k tomu řádek podobný tomuto:

Skript PUT /put.php

Toto řekne serveru Apache, aby všechny PUT požadavky na nějaký URI vyhovující kontextu posílal skriptu put.php. To pochopitelně předpokládá, že máte povoleno PHP pro příponu .php a PHP je aktivní.

V souboru put.php byste potom mohli napsat něco jako:

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

Toto by mělo zkopírovat soubor na místo požadované vzdáleným klientem. Pravděpodobně byste chtěli provést nějaká ověření a/nebo autentizace uživatele před provedením tohoto zkopírování. Jediným použitelným trikem je, že PHP uloží přenesený soubor do dočasného adresáře podobně, jako při použití metody POST. Až skript skončí, dočasný soubor bude odstraněn. Takže váš PHP skipt pro zpracování PUT požadavků musí soubor zkopírovat jinam. Název souboru v dočasném umístění je uložen v proměnné $PHP_PUT_FILENAME a požadovaný název cílového souboru v proměnné $REQUEST_URI (může se lišit u serverů jiných než Apache). Toto cílové jméno je to jediné, co klient specifikoval. Nemusíte ho poslechnout. Mohli byste, například, kopírovat všechny uploadované soubory do speciálního uploadového adresáře.