Apache-2.2
Apache mod_perl 找不到啟動腳本
使用 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