Sascha: CGI' s laufen nicht auf Apache Server

Hallo,

ich bin linux neueinsteiger und habe mir mal das suse 8.0 installiert.
Hier läuft nun der Apache Server. Inzwischen komme ich auch per FTP (inetd) auf den Server.
Ich kann auch meine cgi-Scripte hochladen, aber leider kommt bei allen Scipten die ich aufrufe der Fehler "500 Internal Server Error"...
Im error-log des Apache stehen keine Fehler. Im access-log sehe ich nur, das ein zugriff erfolgt ist...
192.168.0.1 - - [23/Jan/2003:23:46:44 +0100] "GET /cgi-bin/view.cgi HTTP/1.1" 500 604

Das Testscipt funktioniert wenn ich es in der Console direkt mit perl aufrufe.

Woran kann es liegen ?
Ich habe auch schon mit der httpd.conf rumgespielt, aber das hat alles nichts gebracht...
In der ersten Zeile des Scipts habe ich stehen:
#!/usr/bin/perl
...hier liegt auch die perl -datei.

Danke für alle tips.

...Sascha

  1. hallo Sascha,

    ich bin linux neueinsteiger und habe mir mal das suse 8.0 installiert.

    Dann hast du bereits den ersten Fehler gemacht. Als "Neueinsteiger" hättest du die SuSE LINUX 8.1 installieren sollen.

    Hier läuft nun der Apache Server. Inzwischen komme ich auch per FTP (inetd) auf den Server.

    Das ist völlig unverständlich. Der Apache hat nichts mit FTP zu tun. Auf welchen "Server" kommst du denn mit FTP?

    Ich kann auch meine cgi-Scripte hochladen, aber leider kommt bei allen Scipten die ich aufrufe der Fehler "500 Internal Server Error"...

    Ja klar, weil dein lokaler Apache absolut nix mit dem Apache deines Providers zu tun hat. Ein "hochgeladenes" Script läuft halt nicht auf deinem Rechner, sondern auf der vom Provider bereitgestellten Plattform

    Im error-log des Apache stehen keine Fehler. Im access-log sehe ich nur, das ein zugriff erfolgt ist...

    Was mit dem Zugriff auf die "hochgeladenen" Scripte absolut nix zu tun hat

    Das Testscipt funktioniert wenn ich es in der Console direkt mit perl aufrufe.

    Das tun alle einigermaßen sauber geschriebenen Scripts. Das hat mit dem Server nix zu tun.

    Grüße aus Berlin

    Christoph S.

    1. hallo Sascha,

      ich bin linux neueinsteiger und habe mir mal das suse 8.0 installiert.
      Dann hast du bereits den ersten Fehler gemacht. Als "Neueinsteiger" hättest du die SuSE LINUX 8.1 installieren sollen.
      ...das Update werde ich nachholen :-)
      Hier läuft nun der Apache Server. Inzwischen komme ich auch per FTP (inetd) auf den Server.
      Das ist völlig unverständlich. Der Apache hat nichts mit FTP zu tun. Auf welchen "Server" kommst du denn mit FTP?
      Es ist mir klar, das Apache ein reiner "http"-Server ist. Ich meinte vielmehr das ich per FTP auf den Rechner komme, áuf dem Apache läuft, und nun zu testzwecken als kleiner Web-Server laufen soll...
      Ich kann auch meine cgi-Scripte hochladen, aber leider kommt bei allen Scipten die ich aufrufe der Fehler "500 Internal Server Error"...
      Ja klar, weil dein lokaler Apache absolut nix mit dem Apache deines Providers zu tun hat. Ein "hochgeladenes" Script läuft halt nicht auf deinem Rechner, sondern auf der vom Provider bereitgestellten Plattform
      Ich habe in diesem Testnetz keinerlei Verbindung zum Internet und will wie gesagt nur die linux Kiste als Test-Web-Server laufen lassen. Das sollte doch gehen, oder etwa nicht ????
      Im error-log des Apache stehen keine Fehler. Im access-log sehe ich nur, das ein zugriff erfolgt ist...
      Was mit dem Zugriff auf die "hochgeladenen" Scripte absolut nix zu tun hat
      klar hat das damit was zu tun, weil ich Scripte, die ich ja über FTP ins cgi-bin Verzeichniss des Apache geladen habe, natürlich hier auch "geloggt" werden...
      Das Testscipt funktioniert wenn ich es in der Console direkt mit perl aufrufe.
      Das tun alle einigermaßen sauber geschriebenen Scripts. Das hat mit dem Server nix zu tun.

      Jetzt weiss ich leider auch nicht viel mehr. Wenn du mir noch irgendwie helfen kannst, wäre ich froh.

      Sascha

      1. hi Sascha,

        Der Apache hat nichts mit FTP zu tun. Auf welchen "Server" kommst du denn mit FTP?
        Es ist mir klar, das Apache ein reiner "http"-Server ist. Ich meinte vielmehr das ich per FTP auf den Rechner komme, áuf dem Apache läuft

        Das bedeutet, daß der Rechner, auf dem dein Apache läuft, _zusätzlich_ einen FTP-Server laufen hat, auf den du über dein Netzwerk zugreifen kannst? Sowas funktioniert durchaus problemlos, aber die beiden Server haben miteinander nichts zu tun. Sie "bedienen" unterschiedliche Protokolle, und nutzen auch noch unterschiedliche ports (im Standardfall). Je nach Serverkonfiguration kannst du selbstverständlich auch über FTP Zugang zu den Verzeichnissen ermöglichen, die dein Apache dann als "DocumentRoot" ansieht

        Ich habe in diesem Testnetz keinerlei Verbindung zum Internet und will wie gesagt nur die linux Kiste als Test-Web-Server laufen lassen. Das sollte doch gehen, oder etwa nicht ?

        Natürlich funktioniert so etwas. Dann bedeutet das, du möchtest _innerhalb_ deines lokalen Netzes von einem Client aus ein Script per FTP in das cgi-bin-Verzeichnis deines "Servers" laden, ist das richtig?

        Der "error 500" bedeutet: "Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist. Der Server ist entweder überlastet oder ein Fehler in einem CGI-Skript ist aufgetreten."  -  Hast du denn mal ein sehr kleines Beispiel für ein solches CGI-Script? Und ist dein Apache überhaupt in der Lage, CGI-Scripts korrekt anzusprechen? Sind die Rechte auf dem "Server" korrekt gesetzt?

        Grüße aus Berlin

        Christoph S.

        1. Hallo,

          Der "error 500" bedeutet: "Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist. Der Server ist entweder überlastet oder ein Fehler in einem CGI-Skript ist aufgetreten."  -  Hast du denn mal ein sehr kleines Beispiel für ein solches CGI-Script? Und ist dein Apache überhaupt in der Lage, CGI-Scripts korrekt anzusprechen? Sind die Rechte auf dem "Server" korrekt gesetzt?

          Ich habe heute den Rechner mit Suse 8.1 neu gemacht, und jetzt läuft alles (als FTP-Server läuft der pure-ftp). Ich schätzte mal, das es an den Rechten auf dem "Server" lag, das die Scripte nicht liefen!

          Sascha

  2. Hallo,

    Ich kann auch meine cgi-Scripte hochladen, aber leider kommt bei allen Scipten die ich aufrufe der Fehler "500 Internal Server Error"...
    Im error-log des Apache stehen keine Fehler.

    Das kann ich eigentlich gar nicht glauben.

    Das Testscipt funktioniert wenn ich es in der Console direkt mit perl aufrufe.

    Wie rufst Du es auf?

    Woran kann es liegen ?

    Hast Du schon http://selfhtml.teamone.de/cgiperl/intro/cgipublik.htm gelesen. Alles was da steht, wird auch sinngemäß für Dich gelten.

    Ich habe auch schon mit der httpd.conf rumgespielt, aber das hat alles nichts gebracht...

    Es liegt meist nicht an der Standard-Konfiguration des Webservers, sondern eher an Kleinigkeiten, die Dir beim Einspielen der Scripst passiert sind.

    In der ersten Zeile des Scipts habe ich stehen:
    #!/usr/bin/perl
    ...hier liegt auch die perl -datei.

    Na, dnan ist ja eine mögliche Fehlerursache schon abgehakt:-)

    Danke für alle tips.

    Und dann gleich noch einer. Lies Dir die FAQ's dieses Forums durch, und beachte im speziellen die Hinweise betreffend Zitierens. Deine Antwort auf Christoph's Posting ist wirklich unübersichtlich geraten, da Du Deien Antworten auch als Zitate markiert hast.

    Grüße
      Klaus

  3. Hi Sascha,

    Im error-log des Apache stehen keine Fehler.

    sas kann ich mir nicht vorstellen.

    Im access-log sehe ich nur, das ein zugriff erfolgt ist...
    192.168.0.1 - - [23/Jan/2003:23:46:44 +0100] "GET /cgi-bin/view.cgi HTTP/1.1" 500 604

    Das bedeutet, daß der Webserver diesen Zugriff mit einem HTTP-Statius 500 (Internal Server Error) beantwortet und dazu 604 Bytes an den Client ausgeliefert hat.
    Deshalb ist es so unglaubhaft, daß er nicht gleichzeitig einen sprechenderen Eintrag in das error_log vorgenommen haben soll.

    Das Testscipt funktioniert wenn ich es in der Console direkt mit perl aufrufe.
    Woran kann es liegen ?

    Perl ist Perl - CGI hat zusätzliche Anforderungen, beispielsweise die Ausgabe eines korrekten HTTP-Headers.

    http://aktuell.de.selfhtml.org/artikel/cgiperl/inbetriebnahme/

    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.