【发布时间】:2011-01-05 05:58:17
【问题描述】:
我有一个 Perl Web 应用程序,它可以在 Windows Server 2003 上的 Apache 和 IIS6 上运行。在 Apache 上,这个脚本工作得很好。在使用 ISAPI 的 IIS 中,我收到以下错误消息:
软件错误:
无法加载 'lib/auto/Sub/Name/Name.dll' 用于 模块 Sub::Name: load_file:The 找不到指定的模块 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 行。编译 要求失败...
当不在 IIS 中使用 ISAPI 时,它运行良好。我们更愿意在我们的 IIS 环境中继续使用 ISAPI。为什么在运行普通 Perl 时找不到这个模块?
编辑:
我们用相对路径来调用它。
use lib qw{My lib}; # line in question
use My::Schema; # explodes
【问题讨论】:
-
两种环境之间的
@INC是否不同? -
顺便说一句,问题标题暗示你明确地在做
use lib ...,但你没有在正文中提到这一点。您能否包含相关代码(use lib指令,以及试图加载正在爆炸的模块的use行)? -
特别是,使用 ISAPI 可能会更改 Perl 的默认目录 -- serverwatch.com/tutorials/article.php/10825_1407921_5/… 。你用相对路径还是绝对路径调用
use lib?