ext. Prog. klappt über Commandline, aber nicht über CGI-Skript
Carmaus
- cgi
Hallo,
ich habe ein riesen Problem. Woran könnte es liegen, dass ein externes Programm ('blastall') bei einem Aufruf über die Kommandozeile und auch beim manuellen Aufruf eines Skripts mit ./testblast.pl (welches das Programm mit dem system()-Befehl startet) einwandfrei klappt, aber nicht, wenn ich das Skript als cgi über einen Browser aufrufe. Das Skript bricht dann immer mit der Fehlermeldung:
-1 at /Library/WebServer/CGI-Executables/testblast.pl line 38
ab.
So habe ich den system-Befehl geschrieben:
system('blastall -p blastx -i test.fasta -o testblast_sh.out') == 0 or die $?;
Aber wie schon oben erwähnt: An dem Befehl kann es nicht liegen, da blastall ja ausgeführt wird, wenn ich das Perl-Skript manuell ausführe. Nur beim Ausführen aus dem Browser heraus bricht das Skript ab.
Gruß, Carmaus
Achte auf den Pfad! Vom Browser aus ist ein anderer Pfad als wenn du es manuell aufrufst
mfg DJ Kamp
Achte auf den Pfad! Vom Browser aus ist ein anderer Pfad als wenn du es manuell aufrufst
mfg DJ Kamp
Ich hab mal den kompletten Pfad angegeben.
system('/usr/local/bin/blastall -p blastx -i test.fasta -o testblast_sh.out') == 0 or die $?;
Klappt aber leider immer noch nicht. Jetzt kommt die Fehlermeldung:
56 at /Library/WebServer/CGI-Executables/testblast.pl line 38.
Klappt aber leider immer noch nicht. Jetzt kommt die Fehlermeldung:
56 at /Library/WebServer/CGI-Executables/testblast.pl line 38.
In diesem Falle gibt deine Anwendung nicht 0 als Exitcode, sondern 56
Struppi.
Es hat jetzt geklappt. Ich musste überall den kompletten Pfad angeben.
Danke für eure hilfe
-1 at /Library/WebServer/CGI-Executables/testblast.pl line 38
ab.
in Zeile 38 steht: die -1;
keine hilfreiche Fehlermeldung.
So habe ich den system-Befehl geschrieben:
system('blastall -p blastx -i test.fasta -o testblast_sh.out') == 0 or die $?;
Wenn ich das richtig verstehe ist in $? der Rückgabe wert es system aufrufes, -1 bedeutet der Prozess konnte nicht gestartet werden.
Aber wie schon oben erwähnt: An dem Befehl kann es nicht liegen, da blastall ja ausgeführt wird, wenn ich das Perl-Skript manuell ausführe. Nur beim Ausführen aus dem Browser heraus bricht das Skript ab.
Evtl. stimmt der Pfad nicht. Ist blastall von überall ausführbar?
Struppi.