REQUIRE sucht nicht im aktuellen Verzeichnis
Brigitte Kunz
- perl
Guten Tag,
bei der Installation auf einen Server für den 'Scharfeinsatz' tritt bei den Require-Anweisungen folgender Fehler auf:
1.Fall:
Can't locate test_req.pl in @INC (@INC contains: c:/admin/Perl/lib c:/admin/Perl/site/lib .) at D:\Inetpub\webapp\docs\tsca_projdb\test2.pl line 18.
Die zugehörige Require-Anweisung lautet: <require "test_req.pl">.
Wird diese Anweisung abgeändert in <require "./test_req.pl">, tritt eder folgende Fehler auf:
2.Fall:
Can't locate ./test_req.pl at D:\Inetpub\webapp\docs\tsca_projdb\test3.pl line 16.
Auf unserem Entwicklungsserver habe ich keine Probleme.
Die Dateien, auf die zugegriffen werden soll, stehen auch wirklich dort, wo sie stehen sollen.
Der gleiche Fehler wie im Fall 1 tritt auf, wenn ich ganz bewußt in der Require-Anweisung eine Datei angebe, die nicht existiert.
Muß hier evtl. Perl oder der Server (IIS) in spezieller Art konfiguriert werden?
Allen, die sich mit diesem Problem beschäftigen im voraus meinen herzlichsten Dank.
BK
1.Fall:
Can't locate test_req.pl in @INC (@INC contains: c:/admin/Perl/lib c:/admin/Perl/site/lib .) at D:\Inetpub\webapp\docs\tsca_projdb\test2.pl line 18.
Die zugehörige Require-Anweisung lautet: <require "test_req.pl">.
In @INC ist '.' als Pfad enthalten also sollte das auch gehen.
Wird diese Anweisung abgeändert in <require "./test_req.pl">, tritt eder folgende Fehler auf:
2.Fall:
Can't locate ./test_req.pl at D:\Inetpub\webapp\docs\tsca_projdb\test3.pl line 16.
Das kann ich mir eigentlich nur erklären, dass du evtl. Groß- und Kleinschreibung im Dateinamen benutzt (wobei windows Rechner das eigentlich egal sein solllte)
Struppi.
hallo Brigitte,
Can't locate test_req.pl in @INC (@INC contains: c:/admin/Perl/lib c:/admin/Perl/site/lib .) at D:\Inetpub\webapp\docs\tsca_projdb\test2.pl line 18.
Die zugehörige Require-Anweisung lautet: <require "test_req.pl">.
Auch für den IIS ist es in der Regel sinnvoll, ein Verzeichnis "cgi-bin" zu definieren und die PERL-Scripte dort abzulegen. "Hauptscript" und "eingebundenes Script" sollte man in der Testphase günstigerweise ins selbe Verzeichnis legen.
Wird diese Anweisung abgeändert in <require "./test_req.pl">,
gibt es auf einer Windows-Maschine in der Regel einen (deinen) Fehler, weil die Pfadangabe entweder nicht verstanden oder "falsch" interpretiert wird.
Muß hier evtl. Perl oder der Server (IIS) in spezieller Art konfiguriert werden?
Perl wahrscheinlich nicht, aber der IIS vielleicht. Wie wird denn PERL überhaupt vom IIS bei dir angesprochen?
Du könntest eventuell in den Ereignisanzeigen ("Computerverwaltung") eine ausführlichere Fehlerbeschreibung finden.
Grüße aus Berlin
Christoph S.
Hallo,
Can't locate test_req.pl in @INC (@INC contains: c:/admin/Perl/lib c:/admin/Perl/site/lib .) at D:\Inetpub\webapp\docs\tsca_projdb\test2.pl line 18.
Die zugehörige Require-Anweisung lautet: <require "test_req.pl">.
Das Problem ist, daß das aktuelle Verzeichnis (.) nicht jenes ist, das Du erwartest. Das aktuelle Verzeichnis ist, gerade im Webumfeld, in den seltensten Fällen auch gleichzeitig jenes VErzeichnis, in dem das Script auch wirklcih abgelegt ist. Und in wirklichkeit benötigst Du auch nicht das Aktuelle Verzeichnis, sondern jenes, in dem das Script abgelegt ist. Lies dazu am besten:
perldoc -q "How do I add the directory my program lives in to the module/library search path?"
Grüße
Klaus