Рабочий Centos 6.6 с Apache 2.2.15 и mod_perl 2.0.4
Я пытаюсь добавить сценарий запуска (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 апачу и загрузке сценарий запуска:
[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, и в своей конфигурации по умолчанию он не позволяет веб-серверам получать доступ к содержимому пользовательских домашних каталогов.
Чтобы разрешить веб-серверу доступ к пользовательским файлам, необходимо установить соответствующий логический ключ, httpd_read_user_content
:
setsebool -P httpd_read_user_content 1