Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Martin 23. 10. 2011, 20:43:40
-
Zdravím, mám takový problém, když zavolám funci exec v PHP z webu, tak se provede jen něco. Tedy konkrétně mi jde o příkaz postmap. Když zavolám exec('postmap /etc/postfix/virtual_users') tak se nic neprovede. Práva souboru virtual_users uz jsem zkousel dat i na 777 a zadna zmena. Ackoliv kdyz se prihlasim do konzole pod uzivatelem pod kterym bezi apache tak to funguje. Zkousel jsem si i vypsat output na webu, ale nic - prazdno i s volbou -v takze to urcite neprobehne. Ackoliv ostatni prikazy probehnou (napr. date vypise datum, mkdir vytvori slozku atd). Moc dekuji za jakoukolv radu.
-
Sice verim tomu ze si to uz skusal, ale skusit zadat absolutnu cestu k spustacu ?
-
Tomu moc nerozumim, absolutni cestu k souboru samozrejme zadavam, ale absolutni cestu ke spousteci? Kde to najdu? Netusim jaka je absolutni cesta k postmap a jak ji zjistim...
-
Toto ti asi nepojde urobit, kedze funkcia vytvara subor virtuals_users.db ci nieco podobne na co potrebuje prava zapisu do /etc/postfix/ takze by si musel nastavit aj prava zapisu do /etc/postfix pre php uzivatela. Najlepsie by bolo ten prikaz volat cez sudo kde by sa povolil pre uzivatela pod ktorym bezi php iba jeden tento konkretny prikaz.
-
Alebo este mozes skusit nastavit aj /etc/postfix/virtual_users.db na prava zapisu pre php uzivatela a este ako spominal predchadzajuci kolega nastavit uplnu cestu k postmap kedze postmap sa trebars v debiane nachadza v /usr/sbin/ takze asi exec('/usr/sbin/postmap ....').
-
No tak jsem nastavim /etc/postmap na 777, /etc/postmap/virtual_user na 777 a /etc/postmap/virtual_user.db taky na 777 a stale se nic nedeje. (Nicmene se mi to stejne moc nezda protoze kdyz se prihalsim do konzole pod uzivatelem pod kterym bezi php tak to jde - takze prava by nemel byt problem). postmap jsem tedy nastavi absolutne (mam take debian) ale nic. S tim prikazem sudo to moc nechapu, kdyz dam v konzoli sudo tak potom musim zadat heslo pro roota tak jak by to mohlo fungovat v php exec ???
-
Toto skus pridat do /etc/sudoers:
www-data ALL = NOPASSWD: /usr/sbin/postmap /etc/postfix/virtual_users
uzivatela www-data zmen na toho co potrebujes.
potom skus spustit cez php:
exec('sudo /usr/sbin/postfix /etc/postfix/virtual_users')
a porzri ci ti to vytvorilo v /etc/postfix/ potrebne subory.
-
A este prava na suboroch /etc/postfix/virtual_users a /etc/postfix/virtual_users.db nastav normalne hodnoty tj. 0644
-
Je tam preklep malo by tam byt:
exec('sudo /usr/sbin/postmap /etc/postfix/virtual_users')
Na mojom serveri som to skusal, malo by to fungovat.
-
absolutni cestu ke spousteci? Kde to najdu?
Příkazem which:
$ which postmap
/usr/sbin/postmap
-
Super! Jaro mockrat ti děkuji ono to funguje, byl už jsem bezradný, seš borec :-D dík!