Problém s mazáním souborů přes FTP

Napsal (») 26. 2. 2007 v kategorii Banan.cz, přečteno: 4736×

Problém s mazáním souborů přes FTP


Poslední dobou se často objevuje problém klientů, kteří nemohou smazat (nebo upravit) vlastní soubory použitím FTP protokolu. Rozhodl jsem se publikovat na toto téma shrnující článek, který poskytuje možnosti řešení problému.

Typický dotaz


Na serveru jsem si pomocí PHP skriptu vytvořil adresáře/nahrál soubory, pokud se je ale pokusím smazat pomocí FTP klienta, ten zahlásí chybu, že k daným souborům nemám přístup. Co s tím?

Vznik problému


Problém nastává při uploadu PHP skripty. Příkladem je funkce move_uploaded_file pro soubory, ukázka jejího použití je na této adrese: http://howto.banan.cz/upload. Vlastníkem takto nahraného souboru je server Apache (v našem případě uživatel www-data), pod kterým je vlastní skript spouštěn. Zároveň jsou implicitně nastaveny práva k souboru tak, aby do něj mohl zapisovat (nebo jej spouštět) opět jedině a výhradně Apache (a ne Vy jako konkrétní FTP uživatel).

Možná řešení


V praxi to znamená, že pokud s danými soubory chcete pracovat (tedy zejména je mazat), musíte k tomu využít opět PHP skriptů. Funkce pro mazání souborů unlink a adresářů rmdir jsou dobře zdokumentovány přímo na serveru http://www.php.net spolu s ukázkami celých funčkních kódů sloužících k vymazání neprázdných adresářů (funkce unlink, funkce rmdir). Ty můžete ve svém kódu přímo implementovat. Při použití tohoto řešení nicméně stále platí, že k Vašim souborům nebudete mít přes FTP přístup.

Druhým řešením, použitelnějším, které Vám přístup přes FTP umožní, je samotná úprava kódu sloužícího k vytvoření adresáře nebo nahrání souboru. V tomto případě je nutné použít tzv. FTP funkce jazyka PHP (viz manuál na stránce http://cz2.php.net/manual/cs/ref.ftp.php). Ty implementují klasický přístup k FTP serveru - fungují tedy podobně, jako když se připojíte pomocí nějakého FTP klienta.

Část kódu, pomocí něhož vytvoříte adresář, jehož vlastníkem budete Vy (Váš FTP účet, každý klient má právě jeden) je popsána na stránce http://howto.banan.cz/dir/. Samozřejmě je nutné použít Vaše přihlašovací údaje, tzn. server ve tvaru ftp.vase_domena.cz, login a heslo shodné s údaji při přihlášení přes FTP. Poznámka: nastavení práv k adresáři na 0777 je nutné ke správné funkci většiny skriptů.

Nyní máte vytvořen adresář, do kterého můžete nahrávat soubory klasicky přes FTP, případně je stejnou cestou i mazat. Pro upload souborů tak, aby vlastníkem byl Váš FTP účet, je nutné použít funkci ftp_put:

$file = ftp_put($ftp, $destination_file, $source_file, FTP_BINARY);
Funkce je zdokumentována na adrese http://cz2.php.net/manual/cs/function.ftp-put.php.

Úprava skriptů


V rámci našich služeb webhostingu Vám nejsme schopni zajistit výše uvedenou úpravu skriptů, pokud dostatečně nerozumíte dané problematice, kontaktujte prosím Vašeho webmastera. My Vám můžeme nabídnout příplatkovou službu Implementace webu, v jejíž rámci si předplatíte 3 hodiny práce našeho technika na úpravě Vašich stránek. V případě Vašeho zájmu prosím napište na podpora@banan.cz a uveďte název domény, o kterou se jedná.

Související problémy s přístupovými právy


Dalším problémem, který s výše uvedeným okrajově souvisí, jsou ?špatná? nastavení přístupových práv k nově vytvářeným složkám. Následující příkaz vytvoří adresář s přístupovými právy 0755:

mkdir($dir, 0777);
Zdánlivá nelogičnost je dána nastavením masky pro přidělování přístupových práv nově vytvářenému objektu ? hodnota umask, implicitně nastavena na hodnotu 0022. Ta lze změnit vložením funkce umask před funkci mkdir takto:

umask(0);
mkdir($dir, 0777);

Skript bude nyní fungovat podle Vašich představ.

Nedávno se také vyskytly problémy se špatným nastavením přístupových práv ke složce /tmp. Pokud zjistíte, že má u Vás tato složka jakékoli jiné nastavení práv než 0777, změnte jej prosím na tuto hodnotu nebo kontaktujte naši technickou podporu na adrese podpora@banan.cz, opět s uvedením názvu domény.

Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Sandy z IP 90.176.246.*** | 2.7.2008 17:51
asi jsem pomalejšího vědomí, nechápu nic z toho, jak dostat to, co jsem vytvořila u sebe v PC, na web hosting(webovou stranku) u BANAN.CZ . Dělám všechno jak je zde psáno, nic, zkouším alternativní řešení, v podobě změn svých údajů( co kdyby byly  špatné ) přesto mi to pokaždé nahlásí chybu ( v tot.command.) 530 něco failed. anglicky se umím jen najíst, ale jinak ani hlásku. dík za event. výsměch těch úspěšnějších. Ano, jsem blondýna. Sandy !
| 2.7.2008 17:54
Dobrý den,

pošlete prosím na podpora@banan.cz server, jméno a heslo pro připojení k FTP, které zadáváte. Pokusíme se možný problém vyřešit.

S přáním hezkého dne, Carbol Martin
Sandy z IP 90.176.246.*** | 2.7.2008 18:04
DODATEK- potřebovala bych návod krok za krokem, tzn. co , kam a jak napsat, když tu píšete , že to není složité, tak by těch pár řádek návodu- podrobného návodu, někdo poslat mohl. děkuju všem.  Ano, jsem blondýna. Sandysmajl


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel šest a sedm