O mod_perl do Apache não pode localizar o script de inicialização

1

Rodando o Centos 6.6 com o Apache 2.2.15 e o mod_perl 2.0.4

Estou tentando adicionar um script de inicialização ( startup.pl ), mas parece que não consigo mod_perl para encontrá-lo. Reduzi a configuração para o mínimo que ainda reproduz a questão para mim.

Configuração do mod_perl do Apache:

LoadModule perl_module modules/mod_perl.so
PerlRequire /home/web/pdxep/startup.pl
PerlSwitches -wT

Conteúdo de /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;

Ao tentar iniciar o 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...

Como uma verificação de integridade para mostrar que eu verifiquei as permissões:

[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

Também como verificação de integridade, su para o apache e carregar o script de inicialização:

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

O fato de $INC[0] ter esse valor indica que o script de inicialização foi executado com êxito.

Alguma sugestão para mais resolução de problemas?

    
por Ex Umbris 09.07.2015 / 01:49

1 resposta

1

Você tem o SELinux ativado e, em sua configuração padrão, não permite que servidores da Web acessem conteúdo em diretórios base de usuários.

Para permitir que o servidor da Web acesse arquivos do usuário, é necessário definir o valor booleano apropriado, httpd_read_user_content :

setsebool -P httpd_read_user_content 1
    
por 09.07.2015 / 03:36