Dennis Dlugosch: Installation unter Apache 1.3.20

Hi,

als neuling wollte ich mir jetzt auch mal perl unter apache installieren.
also bei mir läuft der apache schon einwandfrei, aber perl eben nicht. ich hab mir ActivePerl gezogen und unter C:...\Apache\cgi-bin\perl installiert. Mein eigentliches cgi-bin Verzeichnis liegt jetzt aber auf einer anderen Partition, und zwar auf D:\htdocs\cgi-bin.
Doch wenn ich jetzt da eine .pl Datei hineinschieb, dann kommt immer Access Frobidden.
Bei Apache hab ich noch in der htppd.conf folgende Angaben gemacht:

ScriptAlias /cgi-bin/ "D:/htdocs/cgi-bin"
    <Directory "D:/htdocs/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>

Was mache ich falsch ? Am besten wäre es wenn ihr mir vielleicht sagen könntet wie ich auch noch den Apache dazu bringe, dass er Dateien mit der Endung .cgi auch mit Perl in Verbindung bringen würde...
Hoffentlich Danke und mfg

  1. hallo,

    Bei Apache hab ich noch in der htppd.conf folgende Angaben gemacht:

    ScriptAlias /cgi-bin/ "D:/htdocs/cgi-bin"
        <Directory "D:/htdocs/cgi-bin">
            AllowOverride None
            Options None
            Order allow,deny
            Allow from all
        </Directory>

    hier mit / am ende
    ScriptAlias /cgi-bin/ "D:/htdocs/cgi-bin/"

    es würde reichen:
    <Directory "D:/htdocs/cgi-bin">
        AllowOverride None
        Options None
    </Directory>

    Was mache ich falsch ? Am besten wäre es wenn ihr mir vielleicht sagen könntet wie ich auch noch den Apache dazu bringe, dass er Dateien mit der Endung .cgi auch mit Perl in Verbindung bringen würde...

    in der httpd.conf steh eine zeile:

    To use CGI scripts:

    #AddHandler cgi-script .cgi

    entferne den kommentar so:
    AddHandler cgi-script .cgi

    hoffentlich grüße
    thomas

  2. Hallo,

    ich hab mir ActivePerl gezogen und unter C:...\Apache\cgi-bin\perl installiert.

    Perl hat ja an und für sich recht wenig mit Apache zu tun. Deshalb kann die Installation von Perl vollkommen unabhängig von der Apache-Installation sein.
    Wichtig ist nur, zu verstehen, _wie_ ein Perlscript vom Webserver gestartet wird.

    Da ist zum einen die Shebang-Zeile (die erste Zeile) im Script :
    Je nach Installation von Perl, sollte hier der vollständige Pfad des Perlinterpreters stehen (perl.exe unter Windows).

    In Deinem Fall wahrscheinlich
    #!C:...\Apache\cgi-bin\perl\bin\perl.exe -w
    (Das -w ist zwar optional, sollte jedoch immer dabei sein, nähreres dazu findest Du in der PErldokumentation 'perlrun')

    Wenn der Apache-Server versucht, ein Script auszuführen, wertet er diese Zeile aus und versucht das hier angegebene Programm zu starten (den Perlinterpreter). Steht aber der falsche Pfad drin, dann gehts nicht und Du bekommst eine Fehlermeldung vom Server.
    Dabei ist es unerheblich, ob und, wenn ja, welche Endung das Script hat.

    Unter Win32 kannst Du auch in der Apache-Konfiguration
      ScriptInterpreterSource registry
    angeben. In der Ausgangskonfiguration (httpd.conf) ist dieser Eintrag zwar vorhanden, jedoch auskommentiert. Durch ein Entfernen des '#' am Anfang der Zeile qwird diese option scharf gemacht.

    Hast Du das gemacht, dann versucht der Webserver beim starten des Scripts aufgrund der Endung das dazu verknüpfte Programm zu starten (Sie Windows Dateitypen).

    Ich hoffe, daß das als Ergänzung zu dem von Thomas gesagtem weiterhilft.

    Grüße
      Klaus

    1. Hallo

      #!C:...\Apache\cgi-bin\perl\bin\perl.exe -w

      Würg Brech! Bei Apache wird auch unter Windows "/" anstelle von "" verwendet.
      Steht sogar in der Konfigurationsdatei...
      ...

      NOTE: Where filenames are specified, you must use forward slashes

      instead of backslashes (e.g., "c:/apache" instead of "c:\apache").

      If a drive letter is omitted, the drive on which Apache.exe is located

      will be used by default.  It is recommended that you always supply

      an explicit drive letter in absolute paths, however, to avoid

      confusion.

      ...
      Ansonsten ist das aber sicherlich nicht so falsch.
      Unter Windows kann man aber auch ein #!perl im Script platzieren. Natürlich nur dann, wenn der Pfad zum Perl- Interpreter in der PATH Variablen (normalerweise in der Autoexec.bat enthalten.) vorkommt.

      So hab ich das bei mir stehen und es geht ganz gut...
      Formmailer und andere Scripte, die auf weitere Externe Programme zugreifen (z.B. sendmail als Mailprogramm) laufen damit dann natürlich nicht. Hier müßte man erst noch die Entsprechenden Programme unter Windows finden und installieren. Falls es das entsprechende Programm dafür gibt, denn nicht alles für Linux gibts auch für Windows...

      Aber unabhängig davon: selbst wenn dies falsch eingestellt wäre, es würde sicher nicht zu einer Forbidden Meldung kommen...
      Also:

      ScriptAlias /cgi-bin/ "D:/htdocs/cgi-bin"
         <Directory "D:/htdocs/cgi-bin">
             AllowOverride None
             Options None
             Order allow,deny
             Allow from all
         </Directory>

      sieht schon gar nicht so verkehrt aus. Wäre aber nicht schlecht, wenn es erlaubt wäre CGI-Scripte darin ausführen zu dürfen...
      Also mal anstelle von "Options None" mal ein "Options ExecCGI" versuchen. Wenn es dann immer noch nicht geht, nochmal alles andere, wo was con CGI-Scripts in der Konfigurationsdatei steht, überprüfen...

      Viel Erfolg damit...

      1. Hi,

        Formmailer und andere Scripte, die auf weitere Externe Programme zugreifen (z.B. sendmail als Mailprogramm) laufen damit dann natürlich nicht. Hier müßte man erst noch die Entsprechenden Programme unter Windows finden und installieren. Falls es das entsprechende Programm dafür gibt, denn nicht alles für Linux gibts auch für Windows...

        wenn ich formmailer unter windows teste, öffne ich keine Pipe sondern einfach nur eine Datei, die *.eml benannt wird. Die checke ich, indem ich sie mit Outlook öffne. Solange man sich einigermaßen an die Spezifikationen hält, sollte es dann mit sendmail auch kein Problem geben.

        Bye Ed X

      2. Hallo,

        #!C:...\Apache\cgi-bin\perl\bin\perl.exe -w
        Würg Brech! Bei Apache wird auch unter Windows "/" anstelle von "" verwendet.

        Das verd... cut&paste. Natürlich, Du hast vollkommen recht.

        Unter Windows kann man aber auch ein #!perl im Script platzieren.

        Wiedr richtig.

        Natürlich nur dann, wenn der Pfad zum Perl- Interpreter in der PATH Variablen (normalerweise in der Autoexec.bat enthalten.) vorkommt.

        Außer NT und Win2K, da wirds dann beispielsweise in der Systemsteuerung->System->Umgebungsvariablen oder so eingestellt. Dabei ist es wichtig., die Systemvariable zu modifizieren, da der Webserver normalerweise nicht mit dem Konto des angemeldeten Users läuft.

        Formmailer und andere Scripte, die auf weitere Externe Programme zugreifen (z.B. sendmail als Mailprogramm) laufen damit dann natürlich nicht. Hier müßte man erst noch die Entsprechenden Programme unter Windows finden und installieren. Falls es das entsprechende Programm dafür gibt, denn nicht alles für Linux gibts auch für Windows...

        Anstelle sendmail würde ich sowieso eher die entsprechenden Perl-Module einsetzen. da habe ich weit weniger Streß beim Plattformwechsel.

        Grüße
          Klaus