Autor Zpráva
prava
Profil *
Ahoj, potřeboval bych, aby složka img měla po zkopírování na ftp práva 777 a ne 755. Lze to nějak předem nastavit? Děkuji
mckay
Profil
prava:
Jde to pomocí php funkce automaticky
 <?php chmod(); ?>


Nebo jak píšeš přes ftp tak to je obvykle Soubor->Atributy a tam to napíšeš.
prava
Profil *
mckay:
Tovím, že to jde přes Soubor - Atributy...Ale já potřebuji, aby ta složka po zkopírování už byla nastavená. Nemůžu papk po uživateli chtít aby si to sám nastavoval.

Jak to udělám pomocí fce chmod() (kam a jak napsat?) Potřeboval bych nastavit 3 složky na práva 777. Díky
mckay
Profil
prava:
Jestli to chápu správně, potřebuješ to udělat tak, aby uživatel aplikace nemusel nic dělat ručně. Tedy pokud má aplikace nějakou instalaci, zadej do té instalace chmod(); složkám na které to potřebuješ.
panther
Profil
prava:
Jak to udělám pomocí fce chmod()
ach, ta lenost..

kam a jak napsat?
nejlépe do nějakého PHP scriptu.
prava
Profil *
mckay:
Tak bohužel fce Chmod() nepomohla (dočetl jsem se, že na 99% hostingů nefunguje...)
Warning: chmod() [function.chmod]: Unable to access /img/ in ... on line 93
Warning: chmod() [function.chmod]: SAFE MODE Restriction in effect. The script whose uid is 1001 is not allowed to access / owned by id 0 in ... on line 93

Je vůbec nějaké řešení? Nebo musím po uživatelích chtít ruční nastavení?
mckay
Profil
prava:
Pokud nefunguje, řešení vynechávající uživatele dle mého neexistuje.
imploder
Profil
Neměly by hostingy správně tohle mít už nastavené, aby PHP skripty mohly na soubory ve svém WWW rootu? FTP server může při uploadu práva nastavit, ale to je záležitost jeho provozovatele (hostingu).

EDIT: Ta chyba vypadá, že je ve skriptu špatně zadaná cesta - / je kořenový adresář, tam skript nemůže mít přístup a adresář img v něm není. Kořenový adresář vlastní uživatel s uid 0, tj. root. Asi na začátku cesty přebývá lomítko (má to být cesta relativní, NE absolutní).
prava
Profil *
imploder:
chmod("img", 0777); 

A teď tato chyba: Warning: chmod() [function.chmod]: Operation not permitted in... on line 93
Asi to opravdu nepůjde...
sysel
Profil
Boze, boze, podle formulace dotazu by náhodný kolemjdoucí čtenář usoudil, že si někdo chce hrát na svém a snad ani k Internetu nepřipojeném počítači. Ale v zápětí je ohromen informací, že drtivá většina administrátorů hostingů takové věci prostě zakazuje.

O povolení takových nadstandardních manipulací je nutné se domluvit přímo se správci hostingu, ale moc bych na to nesázel. Oprávnění x0777 je opravdu velmi benevolentní a pokud je míněno doopravdy, lze jej snáze přednastavit pomocí ****** bitu.

Ono je těžko radit, když není popsaná úloha celkově. Možná, kdybychom věděli více o záměrech, proč to tak má být, třeba bychom nabídli i jiná řešení, která vůbec chmod() nepotřebují.
prava
Profil *
sysel:
Záměry - Redakční systém, který si uživatel stáhne, v instalaci zadá údaje pro spojení s databází, tyto údaje se uloží do souboru, který se sám vytvoří do složky db --> a právě této složce potřebuji nějak nastavit práva, aby k tomu vytvoření v pořádku došlo, podobné to je se složkou img, kam uživatelé budou uploadovat své fotky.
imploder
Profil
sysel:
Jak teda nastavit práva tak, aby vlastník webu (prava) k nim měl přístup, jeho skripty taky, ale nikdo jiný na serveru ne? Pokud PHP běží jako mod_php, běží pod uživatelem Apache, takže při nastavení práv 0700 (tj. vlastník (prava může všechno, ostatní uživatelé nic) k souboru skript mít přístup nebude. Ani 0770 nebude stačit, protože uživatel Apache a prava nejsou ve stejné skupině.

Nevím teda o lepším řešení než práva 0777 a spoléhat se, že safe_mode tím, že kontroluje UID vlastníka skriptu a UID vlastníka souboru, soubor před čtením cizími skripty ochrání.
sysel
Profil
Promiňte odmlku, stále jsem nepochopil, jak to celé probíhá. Z nějakého serveru si uživatel stáhne instalaci ..., ale to si může nahrát i z CD nebo z flešky. Instalace znamená zřejmě spuštění instalačního scriptu a ten je asi napsán v PHP. Ovšem spuštění programového scriptu v PHP lokálně uživatelem je něco úlpně jiného, než provádění PHP scriptů během generování stránky klientovi. Také to podléhá jiným pravidlům. Redakční systém pak zřejmě běží na lokální stanici uživatele, ta ovšem musí mít nejspíš puštěný Apache s PHP modulem.
Ale toto je jen jeden možný výklad. Rovněž je z výše uvedeného popisu možné vydedukovat, že balík s redakčním systémem se pokouším uploadovat přes ftp na cílový server a tam potom dokončit instalaci spuštěním nějakého scriptu, který mj. také vytvoří a chmod-uje nějaké adresáře. Takové skopičiny bych však jako správce serveru vůbec nedovoloval, takže pak je možné jen se domluvit s adminem.
Instalace je vždy problémový okamžik a neměla by se provádět na běžícím serveru popřípadě na dálku.
Netuším, jak je redakční systém složitý, ale většinou se CMS budují nad nějakou databází, která sama o sobě řeší oprávnění uživatelů. To mi přijde celkem rozumné a umožňuje na jednom serveru hostování několika redakčních systémů, které o sobě ani nemusejí vědět.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0