我正在尝试将 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)