用Apache 2.2.15和mod_perl 2.0.4运行Centos 6.6
我试图添加一个启动脚本( startup.pl ),但似乎无法得到mod_perlfind它。 我已经将configuration降低到了最低限度,仍然为我重现了这个问题。
Apache的mod_perlconfiguration:
LoadModule perl_module modules/mod_perl.so PerlRequire /home/web/pdxep/startup.pl PerlSwitches -wT
/home/web/pdxep/startup.pl内容
[jhg@perseus pdxep]$ pwd /home/web/pdxep [jhg@perseus pdxep]$ cat startup.pl use lib qw(/home/web/pdxep); 1;
当试图启动Apache时:
[Wed Jul 08 16:13:02 2015] [error] Can't locate /home/web/pdxep/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.\n [Wed Jul 08 16:13:02 2015] [error] Can't load Perl file: /home/web/pdxep/startup.pl for server perseus.jhmg.pvt:0, exiting...
作为显示我已validation权限的完整性检查:
[jhg@perseus pdxep]$ ls -ld / /home /home/web /home/web/pdxep dr-xr-xr-x. 24 root root 4096 May 26 11:18 / drwxr-xr-x. 5 root root 4096 Jul 8 14:42 /home drwxr-xr-x. 3 root root 4096 Jul 8 14:43 /home/web drwxr-xr-x. 3 jhg apache 4096 Jul 8 16:04 /home/web/pdxep [jhg@perseus pdxep]$ ls -l /home/web/pdxep/startup.pl -rwxr-xr-x. 1 jhg apache 33 Jul 8 16:04 /home/web/pdxep/startup.pl
另外作为一个健全的检查,苏到Apache并加载启动脚本:
[jhg@perseus pdxep]$ sudo -s -u apache bash-4.1$ cd bash-4.1$ pwd /var/www bash-4.1$ perl -de0 Loading DB routines from perl5db.pl version 1.32 Editor support available. Enter h or `hh' for help, or `man perldebug' for more help. main::(-e:1): 0 DB<1> require '/home/web/pdxep/startup.pl'; DB<2> x @INC 0 '/home/web/pdxep' 1 '/usr/local/lib64/perl5' 2 '/usr/local/share/perl5' 3 '/usr/lib64/perl5/vendor_perl' 4 '/usr/share/perl5/vendor_perl' 5 '/usr/lib64/perl5' 6 '/usr/share/perl5' 7 '.'
$INC[0]具有该值的事实表示启动脚本已成功执行。
有关进一步故障排除的build议
您启用了SELinux,并且在默认configuration下,它不允许Web服务器访问用户主目录中的内容。
要允许Web服务器访问用户文件,您需要设置适当的布尔值httpd_read_user_content :
setsebool -P httpd_read_user_content 1