daniel: HTTP 500 bei cgi scripten / formmailer

hallo alle zusammen,

ich habe mal eine frage:

ich versuche seit geraumer zeit nun schon einen simplen formmailer zum funktionieren zu bringen.

aber egal welches script ich ausprobiere,
es will einfach nicht.
und immer der gleiche statuscode nach dem absenden:
HTTP 500 Interner Serverfehler

ich verstehe das nicht.
das cgi-verzeichnis müßte eigentlich korrekt eingreichtet sein,
da ich auf dem server (apache) noch eine andere site laufen habe,
und die auch noch cgi'nutzt.
beide virtuelle hosts sind dabei gleich konfiguriert.

die rechte habe ich auch korrekt gesetzt (755 für das cgi).
ich verstehs nicht.

gibt es vielleicht irgendwas ganz generelles, essentielles, was ich vergssen haben könnte?

grüße,
daniel

achja, meine plattform ist ein apache unter linux, falls das wichtig sein könnte ;-)

  1. Hi,
    Hast du auf den Übertragungsmodus geachtet??? CGI-Dateien müssen immmer Text-Modus übertragen.
    Gruss
    x-VieW

    1. hi,

      ich habe das zip-file direkt aus dem netz auf meinen kleinen server gezogen und da entpackt, also nichts übertragen o.ä. ?

      denke mal , daran kann es eigentlich nicht liegen, oder?

      grüße,
      daniel

      1. Hi daniel,

        ich habe das zip-file direkt aus dem netz auf meinen kleinen server gezogen und da entpackt, also nichts übertragen o.ä. ?
        denke mal , daran kann es eigentlich nicht liegen, oder?

        klar kann es.

        Denn Du hast während der Übertragung die Zeilenbegrenzer eben _nicht_ den Anforderungen des Ziel-Betriebssystems anpassen lassen (das wäre bei einer Übertragung im ASCII-Modus geschehen), sondern Dich darauf verlassen, daß schon alles stimmen wird.

        Viele Grüße
              Michael

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
  2. Hi,

    und immer der gleiche statuscode nach dem absenden:
    HTTP 500 Interner Serverfehler

    das _einzig_ sinnvolle, was Du hierbei machen kannst, ist ins Error-Log des Servers zu gucken.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. hi,

      eigentlich keine schlechte idee, auf die hätte ich zugegebebermaßen auch selber kommen können ;-)

      [Fri Feb 14 14:46:22 2003] [error] (2)No such file or directory: exec of /www/www_intern/intradev/cgi-bin/formmail2.cgi failed
      [Fri Feb 14 14:46:22 2003] [error] [client 10.215.8.50] Premature end of script headers: /www/www_intern/intradev/cgi-bin/formmail2.cgi

      diese beiden meldungen wiederholen sich dauernd.
      ich denke mal, der zweite fehler ist bedingt durch den ersten.

      aber: woraus ich nicht schlau werde -> ich habe DEFINTIV so ein verzeichnis und auch die datei darin ist vorhanden.

      ausschnitt:
      intraserv1:/www/www_intern/intradev/cgi-bin # ls
      .  ..  formmail2.cgi

      entweder habe ich tomaten auf den augen...??
      und auch am formularkopf sehe ich nichts , was nicht stimmen könnte??

      <form action="/cgi-bin/formmail2.cgi" method="POST">

      ich verstehs nicht ??

      grüße,
      daniel

      1. Hi,

        [Fri Feb 14 14:46:22 2003] [error] (2)No such file or directory: exec of /www/www_intern/intradev/cgi-bin/formmail2.cgi failed

        aber: woraus ich nicht schlau werde -> ich habe DEFINTIV so ein verzeichnis und auch die datei darin ist vorhanden.

        üblicherweise heißt die Meldung dann zwar anders; aber ein Perl-Script ist nichts ohne einen Perl-Interpreter, dessen Pfad Du in der Shebang (erste Zeile) des Scripts angegeben hast. Stimmt dieser mit der Realität überein? Und: Stimmen die Zugriffsrechte der Dateien und Verzeichnisse?

        Cheatah

        --
        X-Will-Answer-Email: No
        1. Hi Cheatah,

          [Fri Feb 14 14:46:22 2003] [error] (2)No such file or directory: exec of /www/www_intern/intradev/cgi-bin/formmail2.cgi failed
          üblicherweise heißt die Meldung dann zwar anders; aber ein Perl-Script ist nichts ohne einen Perl-Interpreter, dessen Pfad Du in der Shebang (erste Zeile) des Scripts angegeben hast. Stimmt dieser mit der Realität überein? Und: Stimmen die Zugriffsrechte der Dateien und Verzeichnisse?

          ergänzend: Enthält der Aufruf dieses Interpreters irgendwelche Parameter ("/usr/bin/perl -w" wäre so ein Beispiel)?
          Meine Kristallkugel sagt mir "nein" - dies dann noch kombiniert mit falschen Zeilentrennern würde reichen, um die Fehlermeldung zu erklären.

          Viele Grüße
                Michael

          --
          T'Pol: I apologize if I acted inappropriately.
          V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
  3. es will einfach nicht.

    Hi,
    hast du das script vielleicht in 'nem Extra-Ordner?Der muß dann auf 777

    LG LadyMary

    1. hi,

      ich habe beide ordner , also den CGI und den ordner mit dem formular auf 777 stehen.
      klappt aber trotzdem nicht.

      intressant vielleicht noch:
      wenn ich dsa script ohne server teste, also auf der shell ein

      perl formmail2.cgi

      eingebe, funktioniert es?

      grüße,
      daniel

      1. klappt aber trotzdem nicht.

        Mhm, dann weiß ich auch net recht weiter.Kannsts höchstens bei <Form action> mal mit der kompletten URL versuchen.
        Hast ja geschrieben, daß andere Cgi's laufen, sonst hätt ich gesagt, probiers mal, indem du das Script in .pl umbenennst.

        Gruß mary

      2. Hi daniel,

        intressant vielleicht noch:
        wenn ich dsa script ohne server teste, also auf der shell ein

        perl formmail2.cgi
        eingebe

        auf demselben Server, wo es auch als CGI-Skript laufen soll?
        (Ein Test auf Deinem lokalen PC hätte nicht dieselbe Aussagekraft.)

        funktioniert es?

        Das Problem liegt dann also anscheinend nicht an der Logik des Perl-Skripts, sondern an der Art und Weise, wie der Apache es über die CGI-Schnittstelle zu aktivieren versucht.

        Probiere mal "formmail2.cgi" (ohne "perl" davor) - dann machst Du genau das, was Apache auch versucht. In diesem Falle nutzt Du nämlich die Information von Zeile 1 des Skriptes, während Du bisher mit dem expliziten Aufruf von "perl" einen ganz anderen Mechanismus verwendet hast, um den Perl-Interpreter zu lokalisieren (nämlich $PATH Deiner Shell).

        Viele Grüße
              Michael

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.