Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 35 odgovora
  • 6.704 pregleda

Najnovija ↓

shell_exec - shell skirpta ne radi 16.02.2010. u 13:21 · pre 203 meseca #1
Pozdrav svima.

Znaci ne radi mi shell skripta nesto.sh kada pozivam iz PHP-a pomocu shell_exec(), dok recimo kada iz sistema (terminala) pozivam, radi.

- komande 'ls' ili 'dir' rade.
- safe mode je iskljucen naravno

Evo kod pa ako neko moze pomoci bio bih zahvalan:

Code:


class exec {
    /**
     * Run Application in background
     *
     * @param     unknown_type $Command
     * @param     unknown_type $Priority
     * @return     PID
     */
    function background($Command, $Priority = 0){
       if($Priority)
           $PID = shell_exec("nohup nice -n $Priority $Command > /dev/null & echo $!");
       else
           $PID = shell_exec("nohup $Command > /dev/null & echo $!");
       return($PID);
   }
  
}

$exe = new exec;

$cmd = 'rtf2pdf.sh zinc.rtf';

echo 'CMD: ' . $cmd . '<br>';

$a = $exe->background($cmd);


Jos nesto:

- ta skripta se nalazi u folderu '/home/<korisnik>/Downloads/<folder>'
- kada iz terminala odradim echo $PATH, ispisuje mi takodje i taj folder
- www folder se nalazi u /home/<korisnik>/www (to je Document Root za apache)


Da li je problem sto se skripta nalazi van neke lokacije iz koje se MOGU pokretati skripte pomocu shell_exec() ? Da li je taj folder mozda nastiman u Apache/PHP podesavanjima ?

EDIT: instalacija Lampp se nalazi u /opt folderu
Re: shell_exec - shell skirpta ne radi 16.02.2010. u 13:37 · pre 203 meseca #3
Probao sam i sa punom ali u principu isto je posto se folder sa skriptom nalazi u $PATH variabli (u terminalu). Kao sto sam rekao sa Terminalom kad pozovem radi, a kroz PHP - ne...
Re: shell_exec - shell skirpta ne radi 16.02.2010. u 14:32 · pre 203 meseca #4
Evo sta error_log u php-u kaze:

Code:

nohup: cannot run command `/home/<user>/Downloads/<folder>/rtf2pdf.sh': Permission denied


<user> i <folder> su moje neke putanje koje zelim da sakrijem :)
Re: shell_exec - shell skirpta ne radi 16.02.2010. u 14:44 · pre 203 meseca #5
Probaj da mu stavis (toj skripti rtf2pdf.sh):

Code:

chmod 777 rtf2pdf.sh


Ako onda bude radilo, imas problem sa dozvolama (logicno :P)
Re: shell_exec - shell skirpta ne radi 16.02.2010. u 15:35 · pre 203 meseca #6
A radice mu posto apache "radi" pod drugim korisnikom. ;) Mada bice dovoljno verovatno i 755 umesto 777.

Potrebno je da promenis grupu pod kojom radi skript (chown user:grupa fajl), gde je user user pod kojim radi, a grupa grupa pod kojom apache radi. I potrebno je da das 75x privilegije fajlu (ili cak 77x), gde x izaberi sam (moze recimo 0).
Potpis
Kad sve ostalo zakaže, pročitaj uputstvo...
Re: shell_exec - shell skirpta ne radi 16.02.2010. u 19:01 · pre 203 meseca #7
To sam i ja mislio da je problem - vec sam prije stavio 777 na fajl, a poslije i na citav folder gdje se nalazi aplikacija, ali i dalje NE radi.

Mozda je do grupe problem? Kako da vidim pod kojom grupom radi apache?

P.S.

mozda sam trebao u Linux forum ovo stavit :)
Re: shell_exec - shell skirpta ne radi 16.02.2010. u 19:26 · pre 203 meseca #8
Ako si stavio pod 777 onda nije problem grupe, vec necega unutar skripta. Koja ti se javlja greska sad - vise nema permission denied?
Potpis
Kad sve ostalo zakaže, pročitaj uputstvo...
Re: shell_exec - shell skirpta ne radi 16.02.2010. u 19:32 · pre 203 meseca #9
isto permision denied

ako stavim sudo ispred komande pise mi:
Code:

[sudo] password for nobody:

u logu

p.s. jel postoji mogucnost da kucam sudo i da pored nekako upisem root usename i pass (ako razumijes sta hocu )?
Re: shell_exec - shell skirpta ne radi 16.02.2010. u 20:28 · pre 203 meseca #11
Ajde ti nama lepo jedan
ls -l rtf2pdf.sh

pa da vidimo prava pristupa.
Isto, da li u okviru tog rtf2pdf.sh pozivas nesto na sta nemas prava? Mnogo si maglovit a ocekujes pomoc, tesko ce to ici...

P.S. Nemam pojma za sudo da li mozes nesto da uradis...
Potpis
Kad sve ostalo zakaže, pročitaj uputstvo...
Re: shell_exec - shell skirpta ne radi 16.02.2010. u 21:01 · pre 203 meseca #12
evo ispis trazene komande:

Code:

...../ted-2.21-linux-ix86/Ted$ ls -l rtf2pdf.sh
-rwxrwxrwx 1 boris boris 3202 2009-10-16 17:14 rtf2pdf.sh


A evo o kojoj se skripti radi:

stranica: http://www.nllgg.nl/Ted/

direct download: ftp://ftp.nluug.nl/pub/editors/ted/ted-2.21-linux-ix86.tar.gz

Kad to raspakujete imate u folderu 'Ted/' fajl rtf2pdf.sh...

Ako jos nesto nije jasno pitajte...
Re: shell_exec - shell skirpta ne radi 16.02.2010. u 21:40 · pre 203 meseca #13
rtf2pdf.sh poziva Ted program. Da li ti je on u PATH-u i da li imas prava da njega izvrsavas?

Btw, da li ga pozivas sa:
Code:
#  Usage    rtf2pdf.sh --paper paper something.rtf something.pdf
#  Or        rtf2pdf.sh something.rtf something.pdf
#

Kao sto pise na ftp://ftp.nluug.nl/pub/editors/ted/rtf2pdf.sh ?

I jos nesto - imas li prava nad "something.rtf"? Imas li prava da pises u direktorijumu gde treba da dodje "something.pdf"?
Potpis
Kad sve ostalo zakaže, pročitaj uputstvo...
Re: shell_exec - shell skirpta ne radi 16.02.2010. u 21:56 · pre 203 meseca #14
Code:

(Ted:15799): Gtk-WARNING **: cannot open display: :0.0
No protocol specified


Ovo ispise u log kada pozovem komandu "Ted"
Re: shell_exec - shell skirpta ne radi 17.02.2010. u 10:28 · pre 203 meseca #15
Mislim da je ova tema vise za Linux forum pa bih molio admine da ju prebace tamo.

hvala
Re: shell_exec - shell skirpta ne radi 17.02.2010. u 11:03 · pre 203 meseca #16
Jos ces me naterati da instaliram to cudo da probam :(
Da li ti se nesto "otvara" graficki kad pozivas "rucno" skriptu (pitam zbog ovog gtk warning)? Ako sam dobro shvatio, sve radi lepo kad pokrenes iz shell-a? Ali iz php-a ne?
Potpis
Kad sve ostalo zakaže, pročitaj uputstvo...
Re: shell_exec - shell skirpta ne radi 17.02.2010. u 11:18 · pre 203 meseca #17
Ova rtf2pdf.sh skripta nema graficno nista. Ona koliko sam ja razumio poziva program "Ted" sa nekim parametrima.

E taj Ted kada pozovem iz shell-a (znaci samo "Ted" kucam u terminal) onda se otvori neki prozorcic.

Ova sh skripta se koristi na sledeci nacin:

Code:

rtf2pdf.sh input_dokument.rtf output_dokument.pdf


Tako se RTF dokument pretvara u PDF i to mi RADI kada zovem iz terminala, ali NE RADI iz PHP-a.


P.S. @Man-Wolf: dobro si me podsjetio, pravo bi lose bilo kada bi u PHP fajlu imao root podatke za Linux :) Tako da sam odustao od te opcije, ako je uopste i bila opcija :)
Re: shell_exec - shell skirpta ne radi 17.02.2010. u 11:50 · pre 203 meseca #18
Sta ti kaze ispis:
php -r 'shell_exec("rtf2pdf.sh input_dokument.rtf output_dokument.pdf");'

u terminalu i da li napravi fajl? Naravno, zameni nazive dokumenata, i pozicioniraj se na dir gde imas rtf fajl.
a sta kaze:
rtf2pdf.sh input_dokument.rtf output_dokument.pdf

?

Koje su razlike? Mozda ti nohup unosi zabunu?
Potpis
Kad sve ostalo zakaže, pročitaj uputstvo...
Re: shell_exec - shell skirpta ne radi 17.02.2010. u 12:08 · pre 203 meseca #19
Ovo prvo ne mogu pokrenut posto nemam instaliran PHP. "The program 'php' is currently not installed...."

A drugo ne ispisuje nista, samo konvertuje dokument (kreira output_dokument.pdf)

A sta je noshup? i zasto mi to pise u logu?
Re: shell_exec - shell skirpta ne radi 17.02.2010. u 13:53 · pre 203 meseca #20
Khm, umesto php probaj sa php5. Ako nece ni tako - pa instaliraj taj php ;)

Drugo... sta me pitas za svoj kod???
Citat:
$PID = shell_exec("nohup $Command > /dev/null & echo $!");
Potpis
Kad sve ostalo zakaže, pročitaj uputstvo...
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme