apache DocumentRoot能否更改perl@INC?
我注意到,如果我在VirtualHost apache2配置中更改apache DocumentRoot能否更改perl@INC?,perl,apache2,cgi,Perl,Apache2,Cgi,我注意到,如果我在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 到 所以,如果CGI脚本具有CPAN模块依赖项,它将无法正确运行
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
到
所以,如果CGI脚本具有CPAN模块依赖项,它将无法正确运行
为什么会发生这种情况?您似乎有两个不同的问题 当您想使用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
中)您似乎有两个不同的问题
当您想使用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
中)看起来您的服务器上安装了两个Perl,即更改文档root
更改了执行CGI脚本时使用的Perl二进制文件。我有根据地猜测,Perl 5.28.1安装为/opt/Perl/bin/Perl
,Perl 5.22.1安装为/usr/bin/Perl
。看起来您的服务器上安装了两个Perl,即更改DocumentRoot
更改了CGI脚本执行时使用的Perl二进制文件。我有根据地猜测,Perl 5.28.1安装为/opt/Perl/bin/Perl
,Perl 5.22.1安装为/usr/bin/Perl
。