2010-01-14 8 views
2

J'ai une application Web Perl qui s'exécute à la fois sur Apache et IIS6 sur Windows Server 2003. Sur Apache, ce script fonctionne très bien. Dans IIS utilisant ISAPI, je reçois le message d'erreur suivant:Perl XS inclus à partir d'un répertoire "use lib" est introuvable par ISAPI

Software error:
Can't load 'lib/auto/Sub/Name/Name.dll' for module Sub::Name: load_file:The specified module could not be found at C:/Perl/lib/DynaLoader.pm line 230. at lib/DBIx/Class/Schema.pm line 10
Compilation failed in require at lib/DBIx/Class/Schema.pm line 10.

BEGIN failed--compilation aborted at lib/DBIx/Class/Schema.pm line 10.
Compilation failed in require at (eval 39) line 3. ...propagated at C:/Perl/lib/CGI/Carp.pm line 314.
BEGIN failed--compilation aborted at My/Schema.pm line 2. Compilation failed in require at...

Si vous n'utilisez ISAPI dans IIS il fonctionne très bien. Nous préférerions continuer à utiliser ISAPI dans nos environnements IIS. Pourquoi ne peut-il pas trouver ce module, même si c'est le cas lors de l'exécution normale de Perl?

EDIT:

Nous appelions avec des chemins relatifs.

use lib qw{My lib}; # line in question 
use My::Schema; # explodes 
+0

Est-ce que '@ INC 'diffère entre les deux environnements? – Ether

+0

BTW, le titre de la question implique que vous faites explicitement 'use lib ...', mais vous ne le mentionnez pas dans le corps. Pouvez-vous inclure le code approprié (la directive 'use lib', ainsi que les lignes' use' qui tentent de charger les modules qui explosent)? – Ether

+0

En particulier, l'utilisation d'ISAPI peut modifier le répertoire par défaut de Perl - http://www.serverwatch.com/tutorials/article.php/10825_1407921_5/ISAPI-Perl-Primer.htm. Appelles-tu 'use lib' avec un parent ou un chemin absolu? – mob

Répondre

0

Mobrule, votre commentaire nous a éclairés. Le chemin relatif était différent entre l'utilisation de l'interpréteur Perl vanilla et ISAPI.

use lib qw{My /Inetpub/wwwroot/cgi/lib}; # a little more specific... 
use My::Schema; # not nearly as much dying now. 

Merci pour l'aide!