Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Martin 23. 10. 2011, 20:43:40

Název: Funkce exec v PHP funguje jen na něco
Přispěvatel: 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.
Název: Re: funkce exec v php funguje jen na něco...
Přispěvatel: Viktor 23. 10. 2011, 21:21:11
Sice verim tomu ze si to uz skusal, ale skusit zadat absolutnu cestu k spustacu ?
Název: Re: funkce exec v php funguje jen na něco...
Přispěvatel: Martin 23. 10. 2011, 22:10:24
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...
Název: Re: funkce exec v php funguje jen na něco...
Přispěvatel: Jaro 23. 10. 2011, 22:19:16
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.
Název: Re: funkce exec v php funguje jen na něco...
Přispěvatel: Jaro 23. 10. 2011, 22:27:46
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 ....').
Název: Re: funkce exec v php funguje jen na něco...
Přispěvatel: Martin 24. 10. 2011, 08:08:51
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 ???
Název: Re: funkce exec v php funguje jen na něco...
Přispěvatel: Jaro 24. 10. 2011, 10:04:00
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.
Název: Re: funkce exec v php funguje jen na něco...
Přispěvatel: Jaro 24. 10. 2011, 10:07:35
A este prava na suboroch /etc/postfix/virtual_users a /etc/postfix/virtual_users.db nastav normalne hodnoty tj. 0644
Název: Re: Funkce exec v PHP funguje jen na něco
Přispěvatel: Jaro 24. 10. 2011, 11:38:32
Je tam preklep malo by tam byt:
Kód: [Vybrat]
exec('sudo /usr/sbin/postmap /etc/postfix/virtual_users')
Na mojom serveri som to skusal, malo by to fungovat.
Název: Re: funkce exec v php funguje jen na něco...
Přispěvatel: Franta Kučera 24. 10. 2011, 14:00:57
absolutni cestu ke spousteci? Kde to najdu?

Příkazem which:
$ which postmap
/usr/sbin/postmap
Název: Re: Funkce exec v PHP funguje jen na něco
Přispěvatel: Martin 24. 10. 2011, 19:15:49
Super! Jaro mockrat ti děkuji ono to funguje, byl už jsem bezradný, seš borec :-D dík!