Execute o script Perl no Apache2 / Redhat5.5

1

Estou trabalhando com uma configuração Apache2 / Redhat5.5. Eu estou tentando configurar (e aprender) como executar scripts Perl que é novo para mim.

No meu arquivo httpd.conf, fiz essas alterações e / ou observei estas configurações:

DirectoryIndex index.html index.html.var index.cgi index.pl
...
AddHandler cgi-script .cgi .pl
...
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
...
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

Eu coloquei este script: link no diretório / var / www / cgi-bin /

Em seguida, aponto meu navegador para myIpAddress / cgi-bin / file_upload.pl e recebo um "erro interno do servidor ... O servidor encontrou um erro interno ou um erro de configuração e não conseguiu ..."

Eu então verifico o log de erros para encontrar isto:

[Sun Nov 27 19:59:02 2011] [error] [client ***] (2)No such file or directory: exec of '/var/www/cgi-bin/file_upload.pl' failed
[Sun Nov 27 19:59:02 2011] [error] [client ***] Premature end of script headers: file_upload.pl
[Sun Nov 27 19:59:02 2011] [error] [client ***] File does not exist: /var/www/html/favicon.ico
    
por Roger 27.11.2011 / 21:23

2 respostas

2

Supondo que você tenha o SELinux habilitado, ative o CGI com:

setsebool -P httpd_enable_cgi on

Isso pressupõe que o script seja carregado corretamente. Scripts Perl não rodam muito bem se eles são salvos em um formato DOS ou são enviados via modo binário via ftp. Se você não copiou o arquivo via ftp (mas sim scp ou sftp), converta o arquivo com:

dos2unix file_upload.pl
    
por 27.11.2011 / 22:44
0

Isso me parece que você pode não ter o perl instalado em sua máquina ou que pode estar em um caminho diferente de /usr/bin/perl . Tente digitar /usr/bin/perl -v em uma linha de comando para confirmar que o perl está de fato instalado.

Também é possível que você não tenha permissões de execução em /var/www/cgi-bin/file_upload.pl .

    
por 27.11.2011 / 21:30