Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell-Befehle ausführen
sebezahn
25-09-2001, 15:47
Ich brauche mal Eure Hilfe, ich selbst kriege noch die Motten!
Nach dem Upload eines Bildes über den Webbrowser soll ein Thumbnail erzeugt werden. Auf der Shell-Ebene gebe ich dazu ein:
djpeg /usr/local/httpd/htdocs/demos/foto.jpg | pnmscale -width 136 | cjpeg -outfile /usr/local/httpd/htdocs/demos/tn_foto.jpg
Das funktioniert auch, aber wenn ich kann diesen Befehl in PHP einbaue mit
exec("djpeg [.....] tn_foto.jpg");
bekomme ich gar nichts. Keine Fehlermeldung, kein gar nichts. Ich habe die Rechte des Scripts schon auf den wwwrun gesetzt, auf root gesetzt, das bild diesen Besitzern zugeordnet, die Ordnerrechte geändert... NIX! Ich bin langsam am verzweifeln. Wenn jemand eine Lösung hat, wäre ich sehr dankbar.
Bis denn und Dank im Voraus,
Sebastian
sebezahn
25-09-2001, 16:17
Das darf doch nicht wahr sein! Der Fehler liegt gar nicht im Script direkt selbst. Das startet den Aufruf. Doch läuft der falsch...
Im error_log der Apaches steht es:
sh: /djpeg: No such file or directory
Daraufhin habe ich den Befehl abgeändert und ein usr/bin/djpeg daraus gemacht. Gleiche Meldung im error_log...
Auch ein ./usr/bin/djpeg bringt nichts, bis auf exakt die gleiche Fehlermeldung.
Ich setze eine SuSE 7.0 ein. Hat jemand eine Idee?
Danke,
Sebastian
Servus!
Und was sagt ein
/usr/bin/djpeg ?
Grüße, Stefan
sebezahn
25-09-2001, 16:32
genau das gleiche...
Hallole,
bin mir nicht ganz sicher, aber sucht der Apache nicht unterhalb des Document-Root (bei SuSE /usr/local/httpd/) ??
Gruß micha
sebezahn
25-09-2001, 16:40
das kann sein, aber ich habe auch versucht ../und so weiter zu nutzen. Das ist allerdings nicht erlaubt. Und ein absoluter Pfad sollte ja eigentlich funktionieren.
sebezahn
25-09-2001, 16:45
Jetzt was ganz kurrioses... Ich habe den Befehl mal umgeschrieben
$ausgabe = shell_exec("djpeg ... ");
Dann bekomme ich die Antwort:
Warning: Cannot execute using backquotes in safe mode in /usr/local/httpd/htdocs/demos/index.php on line 7
Im error_log erscheint trotzdem die Meldung:
sh: /djpeg: No such file or directory
Gruß
Sebastian
Das ist schon klar, das ein absoluter Pfad funktionieren sollte, allerdings würde der absolute bei Dir dann /usr/local/httpd/usr/bin/djpeg heißen, falls meine Theorie stimmt ;)
Probiers doch mal aus, erstell unter Deinem Document-Root (bin mir nich sicher ob /usr/local/httpd oder /usr/local/httpd/htdocs) das Verzeichnis /bin und kopier djpeg da rein, dann rufst Du es mit /bin/djpeg auf....
Gruß micha
sebezahn
25-09-2001, 17:00
Ich habe das überall rein kopiert, hin und her kopiert, in jedem Verzeichnis gehabt. aber nöööö.... Nein, funktioniert nicht. Immer die gleiche Fehlermeldung in der error_log.
Ich gebs bald auf...
Servus!
Blöde Frage:
Geht das Programm auf der Kommandozeile?
Ich habe mit Imagemagick herumprobiert und das hat problemlos geklappt...
Grüße, Stefan
sebezahn
25-09-2001, 18:28
das geht einwandfrei...
Martin Ament
25-09-2001, 19:17
geht djpeg auch als user wwwrun ?
sebezahn
25-09-2001, 19:33
Auch das geht. Langsam gehen mir die Ideen aus...
Martin Ament
25-09-2001, 19:49
Hi,
was ist mit den beiden anderen befehlen die in der zeile stehen ?
poste mal die entprechenden ausschnitte aus deinem script, der access.log und der error.log und von /var/log/messages und evtl warn...
martin
Linux redet mit uns, nur manchmal ist es schwierig die sprache zu verstehen.......
;-)
sebezahn
25-09-2001, 20:04
Mein Script beinhaltet zum Test nur diese eine Zeile, bzw. drei Zeilen:
<?
exec ("djpeg /usr/local/httpd/htdocs/demos/foto.jpg | pnmscale -width 136 | cjpeg -outfile /usr/local/httpd/htdocs/demos/tn_foto.jpg");
?>
Das foto.jpg existiert auch, der Befehl an der Shell klappt einwandfrei. Im error_log steht:
sh: /djpeg: No such file or directory
sh: /pnmscale: No such file or directory
Im access_log ist alles in Ordnung:
.... GET /demos/index.php HTTP/1.1" 200 22
Die /var/log/messages spuckt gar nichts relevantes aus.
Nun ja. Ich danke Euch an dieser Stelle schon mal für Eure bisherige Hilfe.
Gruß
Sebastian
Martin Ament
25-09-2001, 20:27
Hi,
also ich hab so was auch mal gemacht, hab es nur leider nicht hier, werde morgen in der Arbeit mal schauen, ob ich es da noch irgendwo habe..
Aber so geht das auf jeden fall nicht, du musst die Pfade mit angeben:
allerdings muss das in einem verzeichnis liegen, das ausführbar ist, sprich also cgi-bin oder wie auch immer du es in der httpd.conf eingestellt hast. Ausserdem muss dieses verzeichnis +exec (oder so ähnlich, bin leider keine wandelnde doku) ausführbar gemacht werden, ausserdem wenn du mit
/usr/local/httpd/htdocs/demos/foto.jpg
arbeitest, sucht er in
was auch immer dein document_root in der Httpd-conf/usr/local/httpd/htdocs/demos/foto.jpg
also bei suse standart in
/usr/local/httpd/htdocs/usr/local/httpd/htdocs/demos/foto.jpg
glaube nicht, dass du es so beabsichtigt hast.
Es ist nunmal so, dass der document_root in der httpd neu gesetzt ist, und somit mit /
immer /usr/local/httpd/htdocs
gemeint ist.
Gruss Martin
PS: es hat schon seinen guten Grund, dass dateien nur in bestimmten verzeichnissen (z.B. cgi-bin) ausgeführt werden dürfen, da wir ja wohl ein sicheres system haben wollen, und nicht jeder benutzer unseres servers zugriff auf die bins haben soll. Das ganze ist nur dann aufgehoben, wenn man als root den server startet, aber das macht niemand ernsthaft. Ausser er will, dass sein system innerhalb von ein paar tagen geknackt wird.
mache jetzt schluss, hoffe es hilft, ansonsten feel free to post bin morgen frueh wieder online
[ 25. September 2001: Beitrag editiert von: Martin Ament ]
sebezahn
25-09-2001, 22:00
Ich habs noch weiter probiert und gebe jetzt erst einmal auf. Auch mit cgi-bin habe ich experimentiert, hat aber ebenfalls nicht geklappt.
Wenn dir was einfällt, wäre es nett, wenn du mir das mit teilst. Ich mache jetzt erst mal eine konstruktive Denkenspause. ;-)
Gute Nacht,
Sebastian
Hallo,
wenn du es nicht so "sicher"brauchst, oder du als
einziger den webserver verwaltest, kannst du mal probieren,
den safe_mode in der php.ini abzuschalten...das sollte
eigentlch laufen
Warning: Cannot execute using backquotes in safe mode in
/usr/local/httpd/htdocs/demos/index.php on line 7
oliver
schau mal bei http://php3.de/manual/en/features.safe-mode.php
und http://php3.de/manual/en/configuration.php#ini.safe-mode-exec-dir
sebezahn
04-10-2001, 18:27
Hab ich schon versucht... Nur brauche ich es sicher und es hat auch nicht geholfen... aber erst mal egal, ich habe das jetzt hinten an gestellt.
Dennoch danke ;-)
Ich weiss noch nicht obs das ist, aber ich habs ein paar threads weiter vorne gefunden:
In der php.ini gibt es einen safemode, der muss auf off stehen.
Muss das aber selbst erst nochmal ausprobieren.
; Safe Mode
safe_mode = Off
thorsten
sebezahn
18-10-2001, 11:52
Nein, das ist nicht das Problem...
Bei mir hats funktioniert.
thorsten
sEPTmEMBER
20-10-2001, 00:45
wie waers mit ln -s /usr/bin/djpeg /usr/local/httpd/htdocs/djpeg
mfg:septi
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.