如何从apache配置文件的perl include路径添加目录?

时间:2014-08-25 18:12:52

标签: apache perl mod-perl mod-perl2

我使用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。

1 个答案:

答案 0 :(得分:1)

您可以从startup.pl中执行此操作:

 use lib qw(/some/other/path);

来自lib pragma

的文档
  

它通常用于向perl的搜索路径添加额外的目录   以后使用或需要语句将找到不是的模块   位于perl的默认搜索路径上。

     

使用lib的参数被添加到perl搜索的开头   路径。说

use lib LIST;

几乎与说

相同
BEGIN { unshift(@INC, LIST) }

或者,您可以使用

从httpd.conf执行此操作
PerlSwitches -I/some/other/path