我安装了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。)
这很奇怪,因为没有“使用”的脚本有效。
我的模块与脚本
位于同一目录答案 0 :(得分:2)
您正在尝试使用textxx.pm perl模块..但是在通过apache运行时找不到它,如果删除使用行,它显然会起作用,因为它不是在寻找模块。
快速修复,如果你的textxx.pm在C:/ strawberry / perl / site / lib中,那么只需在脚本顶部添加:
#!/usr/bin/perl
use lib "C:/strawberry/perl/site/lib";
use textxx;
print("HelloWorld!");
答案 1 :(得分:1)
缺乏权限可能是问题,但我打赌问题是你期望Perl查看包含该模块脚本的目录。 Perl不这样做,至少在默认情况下不这样做。
它可以从控制台运行,因为您将当前工作目录设置为与脚本相同,但是当您通过apache运行它时不是这种情况。
要告诉Perl查看与脚本相同的目录,请添加以下内容,因为use textxx;
:
use Cwd qw( realpath );
use File::Basename qw( dirname );
use lib dirname(realpath($0));