我正在尝试将 perlscript 作为 cgi 脚本运行。但是包含 perl 的 cgi 库不起作用:
# perl -e 'use CGI::Carp qw(fatalsToBrowser);'
Can't locate CGI/Carp.pm in @INC (you may need to install the CGI::Carp module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
#
在旧服务器上,相同的命令不会产生错误消息,并且 cgi 脚本可以正常运行。
这似乎是一个 perl 问题,而不是 Apache 问题。
在我的服务器上,Carp.pm 已经安装在@INC 给出的路径之一中:
# find /usr -iname 'Carp.pm' -ls
555093613 20 -rw-r--r-- 1 root root 20074 Aug 24 21:47 /usr/lib/x86_64-linux-gnu/perl-base/Carp.pm
382731053 20 -rw-r--r-- 1 root root 20074 Mär 13 2016 /usr/share/perl/5.22.1/Carp.pm
#
如何获取包含的 cgi-Library。我正在使用 Ubuntu 16.04 LTS。
答案1
部分回答这个问题是为了我自己的存档。这似乎是最近发生的错误,源于依赖关系中断。检查错误日志时,我收到了类似的错误消息。
tail -100 /var/log/apache2/error.log
...
AH01215: Can't locate CGI.pm in @INC (you may need to install the CGI module)
...
经过一些侦查工作,我将其追溯到以下依赖关系(抱歉,我丢失了我的来源)。
sudo apt-get install libcgi-session-perl
答案2
就我而言,这个问题是由各种系统 perl5/ 目录中的文件和目录权限不正确引起的。运行 Web 服务器的用户必须能够读取这些文件。程序文件 (.pl) 必须可执行。目录必须可读且可搜索。