Perl-Skript unter dem Internet Information Server (IIS)
Marcus
- perl
0 Efchen0 Klaus Mock
Hallo,
vielleicht kann mir jemand bei dem folgenden Problem weiterhelfen:
Ich möchte bzw. muß ein Skript, das unter einem Apache-Server ohne Probleme läuft, unter einem Microsoft Internet Information Server zum Laufen bringen.
Dabei tritt das folgende Problem auf:
Beim Versuch ein Unterverzeichnis zu öffnen verabschiedet sich das Skript mit der folgenden Fehlermeldung:
Can't read DIR: data/templates!
No such file or directory at E:\GIS-Forum\cgi-bin\install.pl line 299.
Die betreffende Zeile sieht so aus:
opendir(D, "data/templates") || die "Can't read DIR: data/templates!\n$!";
Wenn ich den Pfad vollständig angebe, bin ich einen kleinen Schritt weiter:
opendir(D, "e:/gis-forum/cgi-bin/data/templates") || die "Can't read DIR: data/templates!\n$!";
Aber das kann doch nicht die Lösung sein, oder? Ich möchte einfach nicht sämtliche Pfade bei allen Skripten ändern, der Aufwand wäre einfach zu groß. Außerdem müßte es doch für ein solches eher allgemeines Problem eine generelle Lösung geben. Zumindest hoffe ich, daß mir jemand einen Tipp geben kann.
Moin,
Die betreffende Zeile sieht so aus:
opendir(D, "data/templates") || die "Can't read DIR: data/templates!\n$!";Wenn ich den Pfad vollständig angebe, bin ich einen kleinen Schritt weiter:
opendir(D, "e:/gis-forum/cgi-bin/data/templates") || die "Can't read DIR: data/templates!\n$!";Aber das kann doch nicht die Lösung sein, oder?
Doch. In der Apache Doku steht irgendwo geschrieben, dass bei der Ausführung eines CGI-Scripts das Current Directory nicht eindeutig definiert ist. Relative Pfadangaben müssen daher nicht funktionieren. Es wird empfohlen, immer absolute Angaben zu machen.
Ich möchte einfach nicht sämtliche Pfade bei allen Skripten ändern, der Aufwand wäre einfach zu groß.
So wie ich das in Erinnerung habe (ich hab das damals gelesen, wie ich mir CGI beigebracht habe, daher weiß ich heute leider nicht mehr, wo genau das steht), ist das aber Voraussetzung, und Du kannst Dir mit Deiner Methode nicht sicher sein, dass Deine Scripts überhaupt funktionieren! Du hast demzufolge bisher großes Glück gehabt, und es ist empfehlenswert, die Änderung an allen Files durchzuführen.
Außerdem müßte es doch für ein solches eher allgemeines Problem eine generelle Lösung geben.
Ja, absolute Pfadangaben.
Zumindest hoffe ich, daß mir jemand einen Tipp geben kann.
Du kannst ja mal in der Apache-Doku danach suchen. Wie es aussieht, ist das Problem unter dem IIS das gleiche oder gar noch größer.
Gruß,
-Efchen
Hallo,
Aber das kann doch nicht die Lösung sein, oder? Ich möchte einfach nicht sämtliche Pfade bei allen Skripten ändern, der Aufwand wäre einfach zu groß. Außerdem müßte es doch für ein solches eher allgemeines Problem eine generelle Lösung geben. Zumindest hoffe ich, daß mir jemand einen Tipp geben kann.
Grundsätzlich kann ich Efchen nur recht geben. Dein Prolem liegt tiefer, als Du annimmst. Nur weil es in bestimmten Umgebungen nicht zu dem von Dir beschriebenen Fehlerbild kommt, ist es deshalb nicht richtiger.
Andererseits helfen Dir diese Ausführungen momentan nicht weiter. Gut, ich habe schon lange nichts mehr mit dem IIS am Hut, aber zu 4.0er Zeiten konnte man afaik Dein Problem dadurch lösen, indem man für das Verzeichnis, in dem die Perlscripts liegen, extra ein virtuelles Verzeichnis angelegt hat. Dadurch wird das angegebene Verzeichnis für die darin liegenden Scripts zum aktuellen Verzeichnis. Wie genau das nun bei Deiner Version des IIS aussieht, kann ich nicht sagen, weil ich den IIS seit geraumer Zeit auf keinem meiner Rechner installiert habe.
Grüße
Klaus