Funkce exec v PHP funguje jen na něco

Martin

Funkce exec v PHP funguje jen na něco
« kdy: 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.
« Poslední změna: 24. 10. 2011, 11:10:04 od Petr Krčmář »


Viktor

Re: funkce exec v php funguje jen na něco...
« Odpověď #1 kdy: 23. 10. 2011, 21:21:11 »
Sice verim tomu ze si to uz skusal, ale skusit zadat absolutnu cestu k spustacu ?

Martin

Re: funkce exec v php funguje jen na něco...
« Odpověď #2 kdy: 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...

Jaro

Re: funkce exec v php funguje jen na něco...
« Odpověď #3 kdy: 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.

Jaro

Re: funkce exec v php funguje jen na něco...
« Odpověď #4 kdy: 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 ....').


Martin

Re: funkce exec v php funguje jen na něco...
« Odpověď #5 kdy: 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 ???

Jaro

Re: funkce exec v php funguje jen na něco...
« Odpověď #6 kdy: 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.

Jaro

Re: funkce exec v php funguje jen na něco...
« Odpověď #7 kdy: 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

Jaro

Re: Funkce exec v PHP funguje jen na něco
« Odpověď #8 kdy: 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.

Re: funkce exec v php funguje jen na něco...
« Odpověď #9 kdy: 24. 10. 2011, 14:00:57 »
absolutni cestu ke spousteci? Kde to najdu?

Příkazem which:
$ which postmap
/usr/sbin/postmap

Martin

Re: Funkce exec v PHP funguje jen na něco
« Odpověď #10 kdy: 24. 10. 2011, 19:15:49 »
Super! Jaro mockrat ti děkuji ono to funguje, byl už jsem bezradný, seš borec :-D dík!