Carmaus: ext. Prog. klappt über Commandline, aber nicht über CGI-Skript

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

  1. Achte auf den Pfad! Vom Browser aus ist ein anderer Pfad als wenn du es manuell aufrufst

    mfg DJ Kamp

    1. 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.

      1. 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.

        1. Es hat jetzt geklappt. Ich musste überall den kompletten Pfad angeben.
          Danke für eure hilfe

  2. -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.