【问题标题】:Apache doesn't see pm fileApache 看不到 pm 文件
【发布时间】:2012-10-20 01:12:09
【问题描述】:

我已经安装了 Apache 2.2 和草莓 perl。我有 textxx.pm。我准备了简单的脚本

#!/usr/bin/perl
use textxx;
print("HelloWorld!");

当我通过 cmd 运行它时,它可以工作。当我通过网络浏览器运行它时,我得到并错误: 无法在 @INC 中找到 textxx.pm(@INC 包含:C:/strawberry/perl/site/lib C:/strawberry/perl/vendor/lib C:/strawberry/perl/lib。)

这很奇怪,因为没有“使用”的脚本可以工作。

我的模块与脚本位于同一目录

【问题讨论】:

  • web服务器可以读取@INC中的目录吗?
  • textxx.pm 与我的脚本位于同一目录。

标签: perl apache


【解决方案1】:

您正在尝试使用 textxx.pm perl 模块。但是在通过 apache 运行时找不到它,如果您删除 use 行,它显然会工作,因为它不是在寻找模块。

快速修复,如果您的 textxx.pm 位于 C:/strawberry/perl/site/lib 中,那么只需将其添加到脚本顶部即可:

#!/usr/bin/perl
use lib "C:/strawberry/perl/site/lib";
use textxx;
print("HelloWorld!");

【讨论】:

    【解决方案2】:

    缺少权限可能是问题所在,但我敢打赌,问题在于您希望 Perl 查找包含模块脚本的目录。 Perl 不会这样做,至少默认情况下不会。

    它可以从控制台工作,因为您设置的当前工作目录恰好与脚本相同,但是当您通过 apache 运行它时,情况并非如此。

    要告诉 Perl 查找与脚本相同的目录,请添加以下内容,因为 use textxx;:

    use Cwd qw( realpath );
    use File::Basename qw( dirname );
    use lib dirname(realpath($0));
    

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 2019-12-26
      • 2021-02-13
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多