Meise2000: mod_perl Konfigurieren

Hallo zusammen,

ich wollte von Apache 1.3 auf Apache 2.2 umsteigen. Jetzt habe ich ein Problem mit der Konfiguration.

Alles ist installiert, mod_perl eingebunden. Der Aufruf eines PerlSkriptes über den Apache klappt auch, lässt sich aber nicht zu ende durchführen, da ein Modul eingebunden werden soll, was er nicht nachladen kann.

Mein Script (<DOCUMENT_ROOT>/modules/core/dispatcher.pl)

:
 :
 :
require "../../modules/core/config.pm";

Im Log des Apache kann ich folgende Meldung lesen:

[Sat Jan 27 15:11:17 2007] [error] Can't locate ../../modules/core/config.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib . C:/Programme/Apache2) at D:/Workspace/Gondolin/modules/core/dispatcher.pl line 30.\n

Mein DOCUMENT_ROOT in der httpd.conf ist auf "D:/Workspace/Gondolin/" gesetzt. Was mache ich falsch? Insbesondere interessiert mich, was der  . (Punkt) in dem Pfad zu bedeuten hat; also das damit das aktuelle Verzeichnis gemeint ist, ist schon klar, aber welches? Ich dachte das, von dem Skript, welches gerade ausgeführt wird.

Gruß und danke,
Meise

  1. Hey,

    require "../../modules/core/config.pm";

    benutze use lib, um dein privates Modulverzeichnis in die @INC-Liste aufzunehmen, dann require deine Module mit einem weniger abenteuerlichen Pfad. Das lässt sich leichter warten und nachvollziehen.

    Mein DOCUMENT_ROOT in der httpd.conf ist auf "D:/Workspace/Gondolin/" gesetzt. Was mache ich falsch?

    DOCUMENT_ROOT ist unerheblich.

    was der  . (Punkt) in dem Pfad zu bedeuten hat; also das damit das aktuelle Verzeichnis gemeint ist, ist schon klar, aber welches?

    Das sagt dir getcwd. http://perldoc.perl.org/Cwd.html

    --
    水-金-地-火-木-土-天-海-冥
    1. Hallo

      benutze use lib, um dein privates Modulverzeichnis in die @INC-Liste aufzunehmen, dann require deine Module mit einem weniger abenteuerlichen Pfad. Das lässt sich leichter warten und nachvollziehen.

      Das wurde zwar auf meinem lokalen System funktionieren, soll aber auch auf anderen System klappen. Von daher funktioniert das leider nicht.

      Das sagt dir getcwd. http://perldoc.perl.org/Cwd.html

      Vielen Dank. Hab das geprüft. Es stellt sich raus, dass es sich um das Verzeichnis "C:/Programme/Apache2" handelt. Also um "SERVER_ROOT". Wenn das Arbeitsverzeichnis aber das Serververzeichnis ist, dann man es keinen Sinn, dass Apache in beiden Verzeichnissen sucht. Es muss also in der Konfiguration eine Möglichkeit geben, das Arbeitsverzeichnis umzustellen - und genau das brauche ich. Hat da jemand ne Idee?

      Danke,
      Meise.

      1. Wenn du also nicht mit @INC arbeiten willst, vielleicht hilft dann chdir?

        --
        水-金-地-火-木-土-天-海-冥