Maik: Apache Webserver -- Error-log

Hi Leute,

ich hab nen Problem mit meinem Webserver. Und zwar will ich nen Perl-Skript aufrufen
aber der bringt mir immer ne Fehlermeldung und zwar steht im err.log - File dies Fehlermeldung drinne:
[Tue Jul 31 11:24:44 2001] [error] [client 127.0.0.1] couldn't spawn child process: d:/apps/apache group/apache/cgi-bin/ihw/auswert.pl

Meine Browserfehlermeldung ist:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@maik.de and inform them of the time the error occurred, and anything you might have done that may have caused the
error.

More information about this error may be available in the server error log.

Apache/1.3.20 Server at maik.de Port 80

Kann mir da jemand weiterhelfen ?

Wäre euch echt sehr verbunden.

Danke
Maik

  1. Hallo,

    ich hab nen Problem mit meinem Webserver. Und zwar will ich nen Perl-Skript aufrufen
    aber der bringt mir immer ne Fehlermeldung und zwar steht im err.log - File dies Fehlermeldung drinne:
    [Tue Jul 31 11:24:44 2001] [error] [client 127.0.0.1] couldn't spawn child process: d:/apps/apache group/apache/cgi-bin/ihw/auswert.pl

    Überprüfe mal die Shebang-Zeile (die erste Zeile im Script).Die sollte dieses Format haben:
    #!/pfad/zum/perl/interpreter/der/server/maschine -w

    Dieser Pfad wird vom Apche-Server ausgewertet, und sicht daher das Programm '/pfad/zum/perl/interpreter/der/server/maschine', um davon das Script interpretieren zu lassen.
    Und wenn es das Programm nicht gibt, kann er auch keinen Subprozess starten(to spawn a child process), was diese Fehlermeldung zur Folge hat.

    Unter Windows genügt im Normalfall
    #!perl -w

    alternative kannst Du auch in der Datei httpd.conf die Direktive
    ScriptInterpreterSource registry
    setzen. Dann muß allerdings die Extension .pl mit Perl verknüpft sein.

    Grüße
      Klaus

    1. Hallo,

      ich hab nen Problem mit meinem Webserver. Und zwar will ich nen Perl-Skript aufrufen
      aber der bringt mir immer ne Fehlermeldung und zwar steht im err.log - File dies Fehlermeldung drinne:
      [Tue Jul 31 11:24:44 2001] [error] [client 127.0.0.1] couldn't spawn child process: d:/apps/apache group/apache/cgi-bin/ihw/auswert.pl

      Überprüfe mal die Shebang-Zeile (die erste Zeile im Script).Die sollte dieses Format haben:
      #!/pfad/zum/perl/interpreter/der/server/maschine -w

      Dieser Pfad wird vom Apche-Server ausgewertet, und sicht daher das Programm '/pfad/zum/perl/interpreter/der/server/maschine', um davon das Script interpretieren zu lassen.
      Und wenn es das Programm nicht gibt, kann er auch keinen Subprozess starten(to spawn a child process), was diese Fehlermeldung zur Folge hat.

      Unter Windows genügt im Normalfall
      #!perl -w

      alternative kannst Du auch in der Datei httpd.conf die Direktive
      ScriptInterpreterSource registry
      setzen. Dann muß allerdings die Extension .pl mit Perl verknüpft sein.

      Grüße
        Klaus

      Es läuft es läuft *juhu*

      Also ich hab das ScriptInterpreterSource registry aktriviert und dann gings *g*
      Danke Klaus!!

      Aber wieso sollt ich den Pfad ändern ? Ich dachte, dass das nur für Unix relevant ist
      wenn ein #! davorsteht!!

      und nochmal danke an alle die geantwortet haben

      cu
      Maik

      1. hi,

        Aber wieso sollt ich den Pfad ändern ? Ich dachte, dass das nur für Unix relevant ist
        wenn ein #! davorsteht!!

        Ja und nein. Es ist auch unter WINDOWS relevant, wennn du den "Indianer" als Server einsetzt. Außerdem ist es auch sowas wie eine "Stilfrage". Daß du den genauen "Pfad" verkürzen kannst und nicht unbedingt den Laufwerksbuchstaben angeben mußt, liegt daran, daß dein Perl-Interpreter auf einer WINDOWS-Maschine sowieso in der autoexec.bat initialisiert wird. Läßt du deine perl-Scripts über den IIS laufen (IIS5 unter Win2000), so ist die shebang-Zeile unwichtig und kann auch fortgelassen werden.

        Gruß

        Christoph S.

        1. Daß du den genauen "Pfad" verkürzen kannst und nicht unbedingt den Laufwerksbuchstaben angeben mußt, liegt daran, daß dein Perl-Interpreter auf einer WINDOWS-Maschine sowieso in der autoexec.bat initialisiert wird.

          Um genau zu sein, wird meist in der Environment-Variable PATH der Pfad zum Perlinterpreter eingetragen, wodurch das Programm perl[.exe] gefunden werden kann.

          Läßt du deine perl-Scripts über den IIS laufen (IIS5 unter Win2000), so ist die shebang-Zeile unwichtig und kann auch fortgelassen werden.

          Das ist nur bedingt richtig, da Perl die in der shebang-Zeile eingetragenen Optionen wie etwa -w sehr wohl auswertet, auch wenn es unter dem IIS oder von der Shell gestartet wird. (um hier auch die Aussage von Crunch zu korrigieren)
          Lediglich der Pfad zum Interpreter wird ignoriert, da eben Windows über einen anderen Algorithmus bezüglich eines Programmstartes verfügt als dies bei Unix der Fall ist.

          Grüße
            Klaus

          1. Läßt du deine perl-Scripts über den IIS laufen (IIS5 unter Win2000), so ist die shebang-Zeile unwichtig und kann auch fortgelassen werden.

            Das ist nur bedingt richtig, da Perl die in der shebang-Zeile eingetragenen Optionen wie etwa -w sehr wohl auswertet, auch wenn es unter dem IIS oder von der Shell gestartet wird. (um hier auch die Aussage von Crunch zu korrigieren)

            Tja, man lernt nie aus! Danke für den Tip, ich hab die Optionen bisher immer direkt in der Kommandozeile angegeben, aber so ist das ja viel praktischer.

            Grüße,
            Crunch

      2. Aber wieso sollt ich den Pfad ändern ? Ich dachte, dass das nur für Unix relevant ist
        wenn ein #! davorsteht!!

        Hi,
        Wenn man ein Script unter Windows von der Kommandozeile aus aufruft, ist es egal, was in der ersten Zeile steht. Der Apache benutzt die Shebang-Zeile aber genauso wie Unix und startet abhängig davon den richtigen Interpreter.

        Grüße,
        Crunch

  2. Hallo Maik,

    ich hab nen Problem mit meinem Webserver. Und zwar will ich nen Perl-Skript aufrufen
    aber der bringt mir immer ne Fehlermeldung und zwar steht im err.log - File dies Fehlermeldung drinne:
    [Tue Jul 31 11:24:44 2001] [error] [client 127.0.0.1] couldn't spawn child process: d:/apps/apache group/apache/cgi-bin/ihw/auswert.pl

    bin zwar kein Perl-Experte, aber gib doch mal in deiner auswert.pl ganz oben folgendes ein:

    Debugger

    use CGI::Carp qw(fatalsToBrowser);

    Dann werden die Fehler genauer ausgegeben und du kannst deine Fehlersuche eingrenzen.

    Viele Grüße,

    Kirsten

    1. Hi,

      [Tue Jul 31 11:24:44 2001] [error] [client 127.0.0.1] couldn't spawn child process: d:/apps/apache group/apache/cgi-bin/ihw/auswert.pl

      use CGI::Carp qw(fatalsToBrowser);

      dies bringt leider nur dann was, wenn das Script a) syntaktisch korrekt ist (perl -c script.pl liefert ein Okay) und b) gestartet werden kann. Die Meldung "couldn'd spawn child process" bedeutet jedoch sinngemäß: "Konnte das Programm nicht starten."

      In aller Regel ist die Schlußfolgerung die von Klaus genannte: die Shebang-Zeile des Scripts stimmt nicht mit der Realität auf dem Rechner überein.

      Cheatah

      1. Hallo Cheatah,

        dies bringt leider nur dann was, wenn das Script a) syntaktisch korrekt ist (perl -c script.pl liefert ein Okay) und b) gestartet werden kann. Die Meldung "couldn'd spawn child process" bedeutet jedoch sinngemäß: "Konnte das Programm nicht starten."

        In aller Regel ist die Schlußfolgerung die von Klaus genannte: die Shebang-Zeile des Scripts stimmt nicht mit der Realität auf dem Rechner überein.

        ok, danke, man lernt ja nie aus ;-)

        Viele Grüße,

        Kirsten