André Mantz: CGI läuft nicht

Hilfe!

Ich versuche meine ersten Schritte mit einem CGI-Script zu machen. Dabei stellt sich das Problem, daß selbst einfachste Anweisungen nicht funktionieren.

Ich habe unter Win98 OMNI HTTPd als WWW-Server und ActivePerl build 509 installiert. Normale HTML-Seiten kann ich unter 127.0.0.1 ansehen.

Ich habe in eine einfache Seite folgenden Link eingebaut:

<a href="/CGI-BIN/aktion.pl">Aufruf Script</a>

Das Script sieht wie folgt aus:

#!/perl/bin/
   print "<html><head><title>Test</title></head><body><p>Test</p></body></html>\n";

Wenn ich nun auf der HTML-Seite auf den Link klicke, dann erscheint nach kurzer Zeit eine leere Seite. Das Script wird eindeutig aufgerufen. Gebe ich nämlich einen falschen Dateinamen an, so erscheint eine Fehlermeldung.

Warum wird die vom Script generierte HTML-Code nicht ausgegeben? Wenn ich im Browser (IE4) mit der rechten Taste auf die leere Seite klicke und "Quelltext anzeigen" auswähle, so erhalte ich folgenden Quelltext:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">
   <HTML>
   <HEAD>

<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
   </HEAD>
   <BODY></BODY></HTML>

Das hat nichts mit dem vom Script generierten Code zu tun.

Hoffentlich weiß jemand, was ich Falsch mache.

Danke

André

  1. »

    #!/perl/bin/
       print "<html><head><title>Test</title></head><body>

    versuch mal das:

    #!/usr/bin/perl
    print "Content-Type: text/html\n\n";
    print "<html><head><title>Test</title></head><body><p>Test</p></body></html>\n";

    CU
    Rufinus

    1. Noch was

      kann sein, das dein HTTPd Server kein Perl Skript direkt annimmt

      dann mach folgendes gib das mal im Notepad ein:

      @echo off
      perl DATEINAME.pl

      und speichere als NAME.bat ins selbe CGI verzeichniss wie das Perl Skript

      und rufe es so auf:

      <a href="/cgi-bin/NAME.bat">TEST</a>

      CU
      Rufinus

    2. »

      #!/perl/bin/
         print "<html><head><title>Test</title></head><body>

      versuch mal das:

      #!/usr/bin/perl
      print "Content-Type: text/html\n\n";
      print "<html><head><title>Test</title></head><body>

      Test</p></body></html>\n";

      CU
      Rufinus

      Ich glaube das Du am localhost bzw. auf 127.0.0.1 besser
      #!c:\perl\bin\perl (oder eben deinen pfad in dem sich perl.exe befindet) verwenden solltest - sonst wird es nie funken - kann ich mir zumindest nicht vorstellen! Da du ja nicht auf einem Unix-System arbeitest, oder?

      Übrigens habe ich den OmniHTTPd auf meinem PC nie zum Laufen gebracht, habe momentan bessere und schnellere (beim installieren) erfolge mit dem sambar-server. Dieser bietet zwar nicht den funktionsumfang des Apache-Server, ist aber ziemlich schnell installiert (Tip: Programm installieren und starten, dann gleich im browser 127.0.0.1 aufrufen - dort kannst du die einstellungen alle machen!). Er unterstüzt natürlich cgi, und auch die wichtigsten SSI tags.

      cu

      1. Hallo

        #!c:\perl\bin\perl (oder eben deinen pfad in dem sich perl.exe befindet) verwenden solltest - sonst wird es nie funken - kann ich mir zumindest nicht vorstellen! Da du ja nicht auf einem Unix-System arbeitest, oder?

        Das funktioniert mit OmniHTTPd auch wenn die erste Zeile falsch ist oder fehlt, denn der Perl Pfad ist im Webserver eingestellt. Aber Vorsicht wenn Du das Zeugs auf einen öffentlichen Server lädst, dort kann die erste Zeile wichtig sein.

        Übrigens habe ich den OmniHTTPd auf meinem PC nie zum Laufen gebracht, habe momentan bessere und schnellere (beim installieren) erfolge mit dem sambar-server.

        Also ich muss sagen ich war überrascht, wie einfach es war, den OMNI HTTPd zu installieren (Win 95). Aber vermutlich hatte ich einfach Schwein gehabt :-)

      2. Hallo

        Ich glaube das Du am localhost bzw. auf 127.0.0.1 besser
        #!c:\perl\bin\perl (oder eben deinen pfad in dem sich perl.exe befindet) verwenden solltest - sonst wird es nie funken - kann ich mir zumindest nicht vorstellen! Da du ja nicht auf einem Unix-System arbeitest, oder?

        Auf einem Windows-System ist diese Zeile in den meisten Faellen egal, da dort auf andere Weise festgestellt wird, wer fuer die Ausfuehrung eines Scriptes verantwortlich ist (Registry). Allerdings simuliert einer der bekannten WebServer (ich glaube Apache ist es) diese Funktionalitaet, sodass unter diesem Server das Script auch auf einem Windows-System nur dann laeuft, wenn die Zeile angegeben ist. Ob dann aber der korrekte Windows-Pfad angegeben werden muss oder der, der es fuer gewoehnlich unter Unix ist (also /usr/bin/perl), weiss ich nicht.

        Calocybe