Perl 如何在OSX上覆盖httpd.conf中的@INC设置
如何设置Perl在OSX上Apache httpd.conf文件中查找模块的位置 我已经通过CPAN安装了几个模块,这些模块在Perl 如何在OSX上覆盖httpd.conf中的@INC设置,perl,apache,configuration,cgi,Perl,Apache,Configuration,Cgi,如何设置Perl在OSX上Apache httpd.conf文件中查找模块的位置 我已经通过CPAN安装了几个模块,这些模块在 /opt/local/lib/perl5/site_perl/5.8.9 我可以通过perldoc perllocal 如果在命令行上运行perl-V,我会得到(以及其他dir): 然而,当我通过Apache以CGI的形式运行perl脚本时,我得到的错误是,找不到我使用的模块。@INC中包含的目录列表与我的本地perl配置不匹配 [error] [client 127
/opt/local/lib/perl5/site_perl/5.8.9
我可以通过perldoc perllocal
如果在命令行上运行perl-V
,我会得到(以及其他dir):
然而,当我通过Apache以CGI的形式运行perl脚本时,我得到的错误是,找不到我使用的模块。@INC中包含的目录列表与我的本地perl配置不匹配
[error] [client 127.0.0.1] Can't locate Spreadsheet/ParseExcel.pm in @INC (
@INC contains:
/Library/Perl/Updates/5.8.8
/System/Library/Perl/5.8.8/darwin-thread-multi-2level
/System/Library/Perl/5.8.8
/Library/Perl/5.8.8/darwin-thread-multi-2level
/Library/Perl/5.8.8
/Library/Perl
/Network/Library/Perl/5.8.8/darwin-thread-multi-2level
...
在OSX上以CGI形式运行perl时,@INC是如何设置的?我如何覆盖它?在构建
perl
时,@INC
的初始值是硬编码的,但可以通过多种方式修改。这里最方便的是
SetEnv PERL5LIB ...
从Apache配置中,或使用
use lib qw( ... );
从Perl脚本中
也就是说,在Perl5.8.8中使用使用Perl5.8.9安装的模块是不安全的(尽管另一种方法是安全的)。更糟糕的是,一个似乎是线程化的Perl,而另一个则不是。修改@INC
根本行不通
您需要使用与运行脚本所用的perl
相同的perl来安装模块,或者必须使用与安装模块所用的perl
相同的perl来运行脚本
use lib qw( ... );