无法将 cgi 库加载到 perl-cgi-script 中

无法将 cgi 库加载到 perl-cgi-script 中

我正在尝试将 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) 必须可执行。目录必须可读且可搜索。

相关内容