1

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

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

当我通过 cmd 运行它时,它可以工作。当我通过网络浏览器运行它时,出现错误:Can't locate textxx.pm in @INC (@INC contains: C:/strawberry/perl/site/lib C:/strawberry/perl/vendor/lib C:/草莓/perl/lib .)

这很奇怪,因为没有“使用”的脚本有效。

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

4

2 回答 2

2

您正在尝试使用 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!");
于 2012-10-30T16:42:04.353 回答
1

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

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

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

use Cwd qw( realpath );
use File::Basename qw( dirname );
use lib dirname(realpath($0));
于 2012-10-31T04:23:44.353 回答