cgicorner.ch

Informationen rund um Perl/CGI

Sie sind hier: Home > Knowledge Base > Perl/CGI unter dem IIS von Win 2000/2003 Server

Perl/CGI unter dem IIS von Win 2000/2003 Server

Wie kann ich den Internet Information Server (IIS) von Windows 2000/2003 Server so konfigurieren, damit Perl/CGI-Scripts mit der Endung .pl oder .cgi korrekt verarbeitet werden?

Windows 2000 Server

Damit Perl mit IIS korrekt funktioniert, muss natürlich zuerst Perl installiert sein. Danach sind einige kleine Anpassungen notwendig. Hier eine kurze Checkliste:

  • Installieren Sie ActivePerl in ein beliebiges Verzeichnis
  • Erstellen Sie unterhalb des wwwroot-Verzeichnisses ein neues Verzeichnis cgi-bin, z.B. C:\Inetpub\wwwroot\cgi-bin
  • Starten Sie den "Internetdienste Manager" (im Startmenü unter Programme - Verwaltung)
    • Wählen Sie [PC-Name], dann Standard-Website
      • Klicken Sie mit der rechten Maustaste auf das Verzeichnis cgi-bin
      • Klicken Sie "Scriptzugriffe" an
    • Klicken Sie mit der rechte Maustaste auf "Standardwebsite", wählen Sie dann "Eigenschaften", "Basisverzeichnis", "Konfiguration"
      • Hinzufügen
        • Ausführbare Datei: "C:\Perl\bin\perlis.dll" (ggf. Pfad anpassen!), Dateiendung ".cgi"
      • .pl auswählen
        • Ausführbare Datei: "C:\Perl\bin\perlis.dll" (ggf. Pfad anpassen!), Dateiendung ".pl"
  • Internetdienste Manager verlassen
  • Perl sollte jetzt funktionieren. Perl-Scripte müssen im Verzeichnis cgi-bin oder einem Unterverzeichnis davon abgelegt sein.

Das gleiche Prinzip sollte auch beim IIS von Windows NT funktionieren. Die entsprechenden Menüpunkte können dort aber an einer anderen Stelle sein.

Bei einigen Servern werden die CGI-Prozesse in einem anderen Verzeichnis als das Script aufgerufen. Dies kann zu Problemen führen, dass gewisse Dateien nicht mehr gefunden werden.

Beispiel: Ein Script /cgi-bin/test/test.cgi wird vom Server im Verzeichnis /cgi-bin ausgeführt. Wird nun im Script eine Datei im gleichen Verzeichnis gelesen (myfile.dat), funktioniert dies nicht, sondern es muss zuerst noch ins Verzeichnis test gewechselt werden, also test/test.cgi (oder dann gleich den absoluten Pfad, z.B. /inetpub/wwwroot/mysite/cgi-bin/test/test.cgi.

Windows 2003 Server

  • Installieren Sie ActivePerl in ein beliebiges Verzeichnis. Am Ende der Installation haben Sie die Möglichkeit, Perl im IIS einzubinden. Diese Option sollte ausgewählt werden.
  • Erstellen Sie unterhalb des wwwroot-Verzeichnisses ein neues Verzeichnis cgi-bin, z.B. C:\Inetpub\wwwroot\cgi-bin
  • Starten Sie den "Internetinformationsdienste Manager" (im Startmenü unter Programme - Verwaltung)
    • Wählen Sie [PC-Name], dann Standard-Website
      • Klicken Sie mit der rechten Maustaste auf das Verzeichnis cgi-bin
      • Kontrollieren Sie, dass bei "Ausführberechtigungen" der Eintrag "nur Scripts" ausgewählt ist.
    • Klicken Sie mit der rechte Maustaste auf "Standardwebsite", wählen Sie dann "Eigenschaften", "Basisverzeichnis", "Konfiguration"
      • Hinzufügen
        • Ausführbare Datei: "C:\Perl\bin\perl.exe "%s" %s" (ggf. Pfad anpassen!), Dateiendung ".cgi"
      • .pl auswählen (bei korrekter Installation von Perl sollte dieser Eintrag eigentlich schon vorhanden sein; ansonsten erstellen)
        • Ausführbare Datei: "C:\Perl\bin\perl.exe "%s" %s" (ggf. Pfad anpassen!), Dateiendung ".pl"
    • Wählen Sie [PC-Name], dann Webdiensterweiterungen
      • Klicken Sie auf "Perl CGI Extension" und wählen Sie "Zulassen"
  • Internetdienste Manager verlassen
  • Perl sollte jetzt funktionieren. Perl-Scripte müssen im Verzeichnis cgi-bin oder einem Unterverzeichnis davon abgelegt sein.

In der Standard-Konfiguration werden die Scripts im wwwroot-Basisverzeichnis und nicht im Scriptverzeichnis aufgerufen. Dies kann zu Problemen führen, dass gewisse Dateien nicht mehr gefunden werden.

Beispiel: Ein Script /cgi-bin/test/test.cgi wird vom Server im Verzeichnis / ausgeführt. Wird nun im Script eine Datei im gleichen Verzeichnis gelesen (myfile.dat), funktioniert dies nicht, sondern es muss zuerst noch ins Verzeichnis cgi-bin/test gewechselt werden, also cgi-bin/test/test.cgi (oder dann gleich den absoluten Pfad, z.B. /inetpub/wwwroot/mysite/cgi-bin/test/test.cgi.

Für Schreibzugriffe ist es evtl. notwendig, die Berechtigungen in dem gewünschten Verzeichnis auf File-System Ebene zu erhöhen (Schreibrechte an Benutzer).

Weiterführende Links

Autor: Jürg Sommer, knowledge@cgicorner.ch

[ zurück ]