Autor Zpráva
na1k
Profil
Mám problém s oprávněním a přístupem ke složce se zapnutým safe_mode, popíšu:

Na webu mám vytvořenou složku (přístup 777), kterou používám ke skladování souborů a chci docílit toho, aby mohl do této složky (a všech dalších vnořených) můj skript přesouvat uploadnuté soubory (fce move_uploaded_file).

Háček je ale v tom, že mám další skript, který umožňuje uživateli vytvářet vnořené složky. Na první pohled se složka jeví normálně (přístup 777), ale problém je, pokud se do ní pokusím přes php něco nahrát - začne remcat něco o safe_mode a nedostatku oprávnění.

Paradoxně tedy PHP může uploadovat do složek vytvořených přes FTP, ale ne do složek vytvořených PHPčkem, což mi přijde trochu nelogické, neboť bych čekal, že PHP při vytváření složky nastaví sebe jako vlastníka, tudíž by problém být neměl.

Můžete mi to někdo prosím objasnit? Mým cílem je umožnit základní operace jak přes PHP, tak i přes FTP. Co bych měl udělat, abych oba způsoby zrovnoprávnil? Napadlo mě použít FTP funkce vestavěné v PHP a stvořit něco jako klienta, který by vytvářel (případně používal chmod, chown) složky a tím umožnil PHP upload, ale nepřijde mi to jako zrovna nejčistší řešení :-(
ninja
Profil
to bude jiny vlastnik a skupina. Zkus funkci chown ()
na1k
Profil
To bych ale musel nějak zjistit uživatele, pod kterým PHP běží. Nehledě na to, že by to nebylo zrovna univerzální řešení. To už bych radši nastavoval pro každý web zvláštní FTP přístup.

Ještě pro upřesnění, toto mi PHP vrací : SAFE MODE Restriction in effect. The script whose uid is 1001 is not allowed to access .... owned by uid 33
ninja
Profil
na1k: tak to je prave ono. Jsou na to ukazky, hledej chown a umask
na1k
Profil
Chápu použití chown a umask, ale zajímá mě, jestli existuje nějaké jednodušší řešení nebo hlavně univerzálnější. Nelíbí se mi totiž představa, že pokaždé když bych chěl skript použít na nějakém webu, musel bych zjišťovat, pod jakým uživatelem to PHP vlastně běží.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0