-
Shell-Befehle ausführen
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
-
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
-
-
Hallole,
bin mir nicht ganz sicher, aber sucht der Apache nicht unterhalb des Document-Root (bei SuSE /usr/local/httpd/) ??
Gruß micha
-
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.
-
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
-
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
-
-
geht djpeg auch als user wwwrun ?
-
Auch das geht. Langsam gehen mir die Ideen aus...
-
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.......
;-)
-
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