无法将 cgi-library 加载到 perl-cgi-script

lin*_*her 3 apache2 perl

我正在尝试将 perlscript 作为 cgi-Script 运行。但是,包括 perl 的 cgi-library 不起作用:

# 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.
#
Run Code Online (Sandbox Code Playgroud)

在旧服务器上,相同的命令不会产生错误消息,并且 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
#  
Run Code Online (Sandbox Code Playgroud)

我如何获得包含的 cgi-Library。我正在使用 Ubuntu 16.04 LTS。

小智 5

部分回答这个是为了我自己的存档。这似乎是最近的一个错误,源于依赖关系的破坏。检查错误日志时,我收到了类似的错误消息。

tail -100 /var/log/apache2/error.log
...
 AH01215: Can't locate CGI.pm in @INC (you may need to install the CGI module)
...
Run Code Online (Sandbox Code Playgroud)

经过一些侦探工作,我将其追溯到以下依赖项(对不起,我失去了来源)。

sudo apt-get install libcgi-session-perl
Run Code Online (Sandbox Code Playgroud)