我使用apache和mod_perl 2进行使用,我在apache配置文件中有一个PerlRequire指令来指定我的mod_perl启动文件:
PerlRequire startup.pl
但是,当我尝试启动apache时,mod_perl在其perl包含路径中找不到startup.pl。 apache错误日志说:
[error] Can't locate startup.pl in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /etc/httpd) at (eval 2) line 1.
mod_perl 2文档说有一个PerlSetEnv指令可用于设置环境变量, 可以为此目的设置http://perl.apache.org/docs/2.0/user/config/config.html#C_PerlSetEnv_和PERL5LIB环境变量,如下所述:http://learn.perl.org/faq/perlfaq8.html#How_do_I_add_the_dir 但是如果已经设置了PERL5LIB变量,那么我不想破坏先前的设置,而是希望添加另一个目录。我可以在我的apache配置文件中使用什么指令将目录添加到perl包含路径(@INC)而不破坏其先前的内容?
编辑:@ jm666使用" PerlSwitches -I / some / other / path"在apache配置中听起来像是正确的答案,但另一种可能性是在我的PerlRequire指令中使用startup.pl的完整路径。但是,从startup.pl执行此操作的其他建议的答案将无效,因为mod_perl无法找到startup.pl。
答案 0 :(得分:1)
您可以从startup.pl
中执行此操作:
use lib qw(/some/other/path);
的文档
它通常用于向perl的搜索路径添加额外的目录 以后使用或需要语句将找到不是的模块 位于perl的默认搜索路径上。
使用lib的参数被添加到perl搜索的开头 路径。说
use lib LIST;
几乎与说
相同BEGIN { unshift(@INC, LIST) }
或者,您可以使用
从httpd.conf执行此操作PerlSwitches -I/some/other/path