[ vatri @ 16.02.2010. 12:21 ] @
| 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 |
[ kotnik @ 16.02.2010. 12:29 ] @
Da li pozivaš skriptu punom putanjom?
[ vatri @ 16.02.2010. 12:37 ] @
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...
[ vatri @ 16.02.2010. 13:32 ] @
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 :)
[ Man-Wolf @ 16.02.2010. 13:44 ] @
Probaj da mu stavis (toj skripti rtf2pdf.sh):
Code:
chmod 777 rtf2pdf.sh
Ako onda bude radilo, imas problem sa dozvolama (logicno :P)
[ Jbyn4e @ 16.02.2010. 14:35 ] @
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).
[ vatri @ 16.02.2010. 18:01 ] @
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 :)
[ Jbyn4e @ 16.02.2010. 18:26 ] @
Ako si stavio pod 777 onda nije problem grupe, vec necega unutar skripta. Koja ti se javlja greska sad - vise nema permission denied?
[ vatri @ 16.02.2010. 18:32 ] @
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 )?
[ Man-Wolf @ 16.02.2010. 19:26 ] @
Cekaj, da ti iz tog skripta ne pokreces nesto za sta nemas permissione ? :-)
EDIT: Pogledaj ovo, mozda ti pomogne: http://www.php.net/manual/en/function.shell-exec.php#69706
EDIT2: Ili ovo: http://www.php.net/manual/en/function.shell-exec.php#68685
[ Jbyn4e @ 16.02.2010. 19:28 ] @
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...
[ vatri @ 16.02.2010. 20:01 ] @
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...
[ Jbyn4e @ 16.02.2010. 20:40 ] @
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"?
[ vatri @ 16.02.2010. 20:56 ] @
Code:
(Ted:15799): Gtk-WARNING **: cannot open display: :0.0
No protocol specified
Ovo ispise u log kada pozovem komandu "Ted"
[ vatri @ 17.02.2010. 09:28 ] @
Mislim da je ova tema vise za Linux forum pa bih molio admine da ju prebace tamo.
hvala
[ Jbyn4e @ 17.02.2010. 10:03 ] @
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?
[ vatri @ 17.02.2010. 10:18 ] @
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 :)
[ Jbyn4e @ 17.02.2010. 10:50 ] @
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?
[ vatri @ 17.02.2010. 11:08 ] @
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?
[ Jbyn4e @ 17.02.2010. 12:53 ] @
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 $!");
[ vatri @ 17.02.2010. 13:30 ] @
Auf, mene :) [Ma tu klasu sam nasao na netu nisam ja pisao tako da nije moj kod ;) ]
Uglavnom i bez i sa 'nohup' isto ispisuje Permission denied.
Istalirao sam i php i kao sto se moglo ocekivat, to je proslo, tj. kreirao je pdf fajl i bez ikakve poruke (isto kao i direkt iz terminala).
[ Jbyn4e @ 17.02.2010. 13:40 ] @
Odlicno. Onda napravi php fajl tamo gde si probao ono sa php -r, recimo proba.php, i u njega stavi:
Code (php):
<?php
shell_exec("rtf2pdf.sh input_dokument.rtf output_dokument.pdf");
?>
naravno, zameni odgovarajuce nazive za rtf i pdf, pa nam reci kad izvrsis iz browsera php fajl, da li se onda napravi pdf. Da vidimo gde je zapelo (dje ba zapelo :)). I naravno relevantne podatke iz log fajla ako ih bude.
[ vatri @ 17.02.2010. 14:16 ] @
Pa i izvrsavam u tom folderu stalno :)
Ako stavim samo rtf2pdf.sh, ispise u log "sh: rtf2pdf.sh: not found". Ako stavim punu putanju onda pise "Permision denied".
A sada sam probao dodat u path na taj folder gdje se nalazi rtf2pdf.sh ali isto "Permision denied"
[ Jbyn4e @ 17.02.2010. 14:56 ] @
Ok. znaci (zameni localhost i ... sa odgovarajucom putanjom):
http://localhost/.../proba.php
daje u logu ili gde:
1) bez putanje ka rtf2pdf.sh u proba.php - sh: rtf2pdf.sh: not found
2) sa putanjom ka rtf2pdf.sh u proba.php - rtf2pdf.sh Permision denied.
Jesi mi to rekao? Ajde budi malo precizniji jer se gubim o tome o cemu tacno pricas.
Mozes li da nam das jedan ls -la tog celog direktorijuma (gde su ti proba.php i ostalo)?
[ dany12 @ 17.02.2010. 16:28 ] @
Ajde probaj
Code: chmod a+x /home
chmod a+x /korisnik
chmod a+x /downloads
chmod a+x /folder gde ti je ta skripta
Mozda je problem u apache-u,posto vidimo da php lepo radi.Potrebno je da direktorijumi imaju izvrsnu dozvolu da bi moglo da se prelazi iz jednog u drugi.
[ vatri @ 17.02.2010. 17:00 ] @
dany12 dje si bio dosad sunce ti :) Upravo je to bio problem. Hvala ti puno.
E sad samo pitanje: koliko je bezbjedno za sistem da ostavim takve permisije na tim folderima???
@Jbyn4e:
Nisam dobro napisao zadnji post (zadnju recenicu), umjesto path htio sam napisati $PATH (to je variabla u Linux-u gdje se nalazi lista foldera iz kojih se programi mogu pozivat bez kucanja 'full' putanje). Htio sam reci da sam prvo u taj path dodao folder sa tom skriptom rtf2pdf.sh pa tek onda pozivao "rtf2pdf in.rtf"
U svakom slucaju hvala tebi puno na strpljenju i sorry sto sam te izmrcvario :)
P.S. imate po jedan: (click here) :)
[ Jbyn4e @ 17.02.2010. 18:40 ] @
A sta mislis sto sam te pitao za ls -la tog direktorijuma? (prava pristupa).
Nije dobro da svima (a+x) dati izvrsne priviliegije. Zato sam i pricao ranije o grupi koja sme da izvrsava nesto nad fajlom i/ili direktorijumom.
Sad je pitanje nad cim si stavio a+x :)
A sto se tice piva, preferiram nesto drugo ;) npr. ovo.
[ vatri @ 17.02.2010. 18:58 ] @
Code:
chmod a+x /home
chmod a+x /korisnik
chmod a+x /downloads
chmod a+x /folder gde ti je ta skripta
To sto je dani rekao. Sta cu sad? :)
Ma kakav tuborg - samo domace, nase :)
[ Jbyn4e @ 17.02.2010. 19:14 ] @
Tuborg se proizvodi u Celarevu, ako se dobro secam :), tako da je nase. A moze i Loewenbrau ili kako se vec pise, ako si bas zapeo sa apatinskom pivarom :)
Pa koje od tih direktorijuma imas (osim ovog poslednjeg)?
[ vatri @ 17.02.2010. 19:22 ] @
Kako mislis koje imam? Imam sve valjda...
[ Jbyn4e @ 17.02.2010. 20:14 ] @
Pa valjda znas kako da vidis koji direktorijumi postoje?
[ vatri @ 17.02.2010. 20:30 ] @
Postoje svi nabrojani
[ Jbyn4e @ 17.02.2010. 21:00 ] @
Ma verovatno onda nece smetati. Neka ostane tako. Mrzi me vise da razmisljam :)
Samo mi nije jasno kako je dani znao da ti postoje ti folderi ako ti nisi naveo?
[ vatri @ 17.02.2010. 21:09 ] @
[ Jbyn4e @ 17.02.2010. 21:13 ] @
/home
/korisnik
/downloads
/ putanja do foldera gde su ti skripte
NIJE isto sto i
/home/<korisnik>/Downloads/<folder>
Prvo su 4 foldera pod korenim folderom, drugo je jedan folder sa punom putanjom.
[ vatri @ 17.02.2010. 21:20 ] @
Ejs, opet nesporazum - naravno da je samo /home u korijenu ostali su pod home. Vazno da smo se sad razumeli :)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|