我有一个 Perl Web 应用程序,可在 Windows Server 2003 上的 Apache 和 IIS6 上运行。在 Apache 上,此脚本运行良好。在使用 ISAPI 的 IIS 中,我收到以下错误消息:
软件错误:
无法为模块 Sub::Name 加载‘lib/auto/Sub/Name/Name.dll’:load_file:在 C:/Perl/lib/DynaLoader.pm 第 230 行找不到指定的模块。在 lib/DBIx/Class/Schema.pm 第 10 行,
在 lib/DBIx/Class/Schema.pm 第 10 行需要时编译失败。BEGIN 失败 - 编译在 lib/DBIx/Class/Schema.pm 第 10 行中止。
编译在 require (eval 39) 第 3 行失败。...传播到 C:/Perl/lib/CGI/Carp.pm 第 314 行
。BEGIN 失败 - 编译在 My/Schema.pm 第 2 行中止。编译在 require 处失败...
当在 IIS 中不使用 ISAPI 时,它运行良好。我们更愿意继续在 IIS 环境中使用 ISAPI。为什么它找不到这个模块,即使在运行普通 Perl 时可以找到它?
编辑:
我们用相对路径来调用它。
use lib qw{My lib}; # line in question
use My::Schema; # explodes
答案1
stack overflow 上的 Mobrule 给了我们一个启发性的评论。使用 vanilla Perl 解释器和 ISAPI 时,相对路径是不同的。
use lib qw{My /Inetpub/wwwroot/cgi/lib}; # a little more specific...
use My::Schema; # not nearly as much dying now.
谢谢您的帮助!