system
K.Bokov
- perl
Hallo,
ich möchte ein Programm mit dem Perl-Skript aufrufen (http://localhost/cgi-bin/test.cgi):
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;
use Env;
use Shell;
my @toScaleImg = ();
@toScaleImg = qq(bmpscale ../bilder/_test.bmp 120 90 ../bilder/_test_scaled.bmp);
printf ("Programmaufruf: %80s \n", @toScaleImg);
system (@toScaleImg) == 0 or die "Command: @toScaleImg \n Return: $? \n $! \n";
und bekomme aber immer wieder die Fehlermeldung:
Software error:
Command: /bin/bmpscale ../bilder/_test.bmp 120 90 ../bilder/_test_scaled.bmp
Return: 256
Das Programm bmpscale liegt unter /bin und lässt sich über Kommandozeile bedienen:
user@home:> bmpscale ../bilder/_test.bmp 120 90 ../bilder/_test_scaled.bmp
user@home:>
...skaliert das Bild auf die Größe 120x90 und speichert das Ergebnis in der Datei _test_scaled.bmp
Bilderverzeichnis liegt unter http://localhost/bilder
Danke für die Tipps!
ich möchte ein Programm mit dem Perl-Skript aufrufen
schön
Danke für die Tipps!
Was ist das Problem?
Struppi.
Was ist das Problem?
;-) na ja, das Bild wird nicht skaliert
und die Fehlermeldung...
Hallo,
system (@toScaleImg) == 0 or die "Command: @toScaleImg \n Return: $? \n $! \n";
Warum system(), Du hast doch
use Shell;
machs so
use Shell qw(programm);
und dann:
programm(@parameterliste);
...skaliert das Bild auf die Größe 120x90 und speichert das Ergebnis in der Datei _test_scaled.bmp
Dann doch besser gleich:
use Image::Size;
Viele Grüße,
Hotte
use Shell qw(programm);
und dann:
programm(@parameterliste);
Keine Fehlermeldung aber auch keine Skalierung. :(
und bekomme aber immer wieder die Fehlermeldung:
Hab ich übersehen, du kannst hier auch Quellcode formatieren, dann wären deine Kommentare sichtbarer gewesen.
``
Software error:
Command: /bin/bmpscale ../bilder/_test.bmp 120 90 ../bilder/_test_scaled.bmp
Return: 256
Das Programm bmpscale liegt unter /bin und lässt sich über Kommandozeile bedienen:
Bist du sicher?
Was ergibt im Perl Skript
print "Datei ist nicht da wo du sie vermutest" unless -e '/bin/bmpscale';
user@home:> bmpscale ../bilder/_test.bmp 120 90 ../bilder/_test_scaled.bmp
user@home:>
Wie lautet das verzeichniss unter dem das CGI Skript läuft?
Was ergibt
use Cwd;
print 'Arbeitsverzeichniss: ', cwd();
Struppi.
Was ergibt
use Cwd;
print 'Arbeitsverzeichniss: ', cwd();
/home/user/www
jetz habe ich den Pfad angepasst:
~~~perl
@toScaleImg = qq(bmpscale ./bilder/_test.bmp 120 90 ./bilder/_test_scaled.bmp);
und rufe den Skript aus der Kommandozeile:
user@home:> pwd
user@home:> /home/user/www
user@home:> ./cgi/test.cgi
...das Bild wird skaliert! Über Browser geht es noch nicht.
Hallo,
...das Bild wird skaliert! Über Browser geht es noch nicht.
Wenns unbedingt über den Browser laufen soll:
print "Content-type: text/html\n\n"; # oder text/plain
bevor Du was ausgibst mit weiteren print-Anweisungen. Und wie Struppi schon sagte, die Pfadangaben beachten.
Viele Grüße,
Hotte
bevor Du was ausgibst mit weiteren print-Anweisungen. Und wie Struppi schon sagte, die Pfadangaben beachten.
Pfadangaben müssen stimmen. Es geht aber nicht, wenn ich sogar nur das Programm aufrufe:
system ("bmpscale");
Der Browser sagt mir:
No such process at ... line ....
Das komische daran ist, wenn ich ls-Befehl aufrufe:
system ("ls -la");
...so zeigt er mir Dateiein im Verzeichnis an. ls und bmpscale liegen im gleichen /bin Verzeichnis, haben gleiche Rechte etc.
...so zeigt er mir Dateiein im Verzeichnis an. ls und bmpscale liegen im gleichen /bin Verzeichnis, haben gleiche Rechte etc.
Unter welchen Rechten laufen den die CGI Skripte?
ich kenn micht damit niocht so aus, aber das müssen nicht die sein mit denen du arbeitest.
Struppi.
Unter welchen Rechten laufen den die CGI Skripte?
Ganz extrem 777
Bist du sicher?
Ja.
Was ergibt im Perl Skript
print "Datei ist nicht da wo du sie vermutest" unless -e '/bin/bmpscale';
Nichts. Wird nicht angezeigt, weil die Datei da ist.
Das Programm bmpscale liegt unter /bin und lässt sich über Kommandozeile bedienen:
Problem habe ich gelöst!!!
Ich habe mal das Binary-Programm nach /bin kopiert aber die Librarys sind im geschützten Verzeichnis liegen geblieben.
Der Server dürfte sie nicht anfassen und deshalb gab's diesen Effekt. Ich müsste also mit shell diesen Fehler korrigieren... ;)
Danke an Allen!