我通过 cpan 安装了 Perl 模块 HTML::Template。Perl 本身识别模板模块,但是当我尝试用作 Perl CGI 脚本时,它会触发以下错误:
$ cat /var/log/httpd/error_log
[Tue Feb 14 11:28:27 2012] [error] [client 127.0.0.1] Can't locate HTML/Template.pm in @INC (@INC contains: /root/perl5/lib/perjl5/ /usr/local/lib/perl5 /usr/$
[Tue Feb 14 11:28:27 2012] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at /var/www/cgi-bin/index.pl line 4.
[Tue Feb 14 11:28:27 2012] [error] [client 127.0.0.1] Premature end of script headers: index.pl
Run Code Online (Sandbox Code Playgroud)
我的 Perl 脚本(index.pl)如下:
#!/usr/bin/perl -w
use lib "/root/perl5/lib/perjl5"; # is it the correct way to include libs?
use HTML::Template; # error line
print "Content-type: text/html\r\n\r\n";
print "Hello there!<br />\nJust testing .<br />\n";
for ($i=0; $i<10; $i++)
{
print $i."<br />";
}
Run Code Online (Sandbox Code Playgroud)
如果我加载脚本http://localhost/cgi-bin/index.pl,它会返回 500 内部服务器错误。
该模块已安装并位于/root/perl5/lib/perl5/HTML/Template.pm
在,事实$ perldoc perllocal
返回:
[...]
[1mMon Feb 13 16:43:34 2012: "Module" HTML::Template[0m
· "installed into: /root/perl5/lib/perl5"
· "LINKTYPE: dynamic"
· "VERSION: 2.6"
· "EXE_FILES: "
[...]
Run Code Online (Sandbox Code Playgroud)
它正确安装吗?如果我输入$ perl -e "use HTML::Template
没有错误返回
我正在使用 Fedora 16
Linux 版本 3.2.5-3.fc16.i686 (mockbuild@x86-06.phx2.fedoraproject.org) (gcc 版本 4.6.2 20111027 (Red Hat 4.6.2-1) (GCC) ) #1 SMP Thu Feb 9 02:24:08 UTC 2012
您的use lib
线路有一个额外的j
.
use lib "/root/perl5/lib/perjl5";
# ^
Run Code Online (Sandbox Code Playgroud)
所以路径与您稍后所说的不匹配(“模块已安装并位于:/root/perl5/lib/perl5/HTML/Template.pm”)。
诊断此问题的方法是从错误消息中复制并粘贴目录,/root/perl5/lib/perjl5
然后将模块的文件名附加HTML/Template.pm
到 give /root/perl5/lib/perjl5/HTML/Template.pm
,然后查看该文件是否存在。
然后您会看到该文件不存在,然后可以继续找出目录名称中的拼写错误。
此外,如果您要维护自己的 (CPAN) 库,而不是放入use lib ...
所有源文件,您可能需要考虑使用另一种机制让 perl 使用您的库,例如设置PERL5LIB
环境变量(您可以设置从 shell 的启动文件(例如 ~/.bash_profile)),或使用perl -I...
.
此外,如果您想使用 CPAN,您可能需要查看local::lib模块。使用 local::lib 的一种方便方法是安装发行版的 local::lib(例如在 Debian/Ubuntu 下apt-get install liblocal-lib-perl
),然后使用它来设置您自己的私有 CPAN 库。(您可以从 CPAN 引导 local::lib,但使用发行版包更容易做到这一点。)
归档时间: |
|
查看次数: |
4833 次 |
最近记录: |