Я пытаюсь запустить perlscript как cgi-Script. Однако включение cgi-библиотеки perl не работает:
# 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. Я использую Ubuntu 16.04 LTS.
Частично отвечаю на это для моего собственного архивирования. Это, кажется, недавняя ошибка, которая связана с нарушенной зависимостью. Я получил похожее сообщение об ошибке при проверке журнала ошибок.
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
В моем случае эта проблема была вызвана неправильными правами доступа к файлам и каталогам в различных системных каталогах perl5 /. Файлы должны быть доступны для чтения пользователю, под которым работает веб-сервер. Программные файлы (.pl) должны быть исполняемыми. Каталоги должны быть доступны для чтения и поиска.