Apache-2.2

Apache mod_perl 找不到啟動腳本

  • July 9, 2015

使用 Apache 2.2.15 和 mod_perl 2.0.4 執行 Centos 6.6

我正在嘗試添加一個啟動腳本 ( startup.pl),但似乎無法讓 mod_perl 找到它。我已將配置減少到最低限度,仍然為我重現該問題。

Apache mod_perl 配置:

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...

作為一個健全的檢查來表明我已經驗證了權限:

[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

同樣作為健全性檢查,su 到 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 `h h' 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]表明啟動腳本已成功執行。

有關進一步故障排除的任何建議?

您啟用了 SELinux,並且在其預設配置中,它不允許 Web 伺服器訪問使用者主目錄中的內容。

要允許 Web 伺服器訪問使用者文件,您需要設置適當的布爾值,httpd_read_user_content

setsebool -P httpd_read_user_content 1

引用自:https://serverfault.com/questions/704484