我注意到,如果我在VirtualHost apache2配置中更改了DocumentRoot
,则perl @INC
也从以下版本更改了
/opt/perl/lib/perl5/site_perl/5.28.0/x86_64-linux
/opt/perl/lib/perl5/site_perl/5.28.0
/opt/perl/lib/perl5/5.28.0/x86_64-linux
/opt/perl/lib/perl5/5.28.0
到
/var/www_local/WWWHub
/var/www_local/WWWHub/work
/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
因此,如果CGI脚本具有CPAN模块依赖项,则它将无法正确运行。
为什么会发生?
答案 0 :(得分:0)
您似乎有两个不同的问题。
要使用Perl 5.22.1的内部版本,则使用的是Perl 5.28.0。
要解决此问题,请调整脚本的shebang(#!
)行以引用正确的Perl构建。
例如,您可能正在使用
#!/opt/perl/bin/perl
您可能要使用的是
#!/usr/bin/perl
您希望找到相对于脚本位置安装的模块。
脚本应为此使用use lib
和相对于$RealBin
的路径。
use FindBin qw( $RealBin );
use lib $RealBin, "$RealBin/work";
(我假设脚本位于/var/www_local/WWWHub
中。)