【问题标题】:Perl XS included from a “use lib” directory can’t be found by ISAPIISAPI 无法找到“use lib”目录中包含的 Perl XS
【发布时间】: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

标签: perl iis isapi


【解决方案1】:

Mobrule,您的评论启发了我们。使用普通 Perl 解释器和 ISAPI 的相对路径是不同的。

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

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多