Execute o script Perl no Apache2/Redhat5.5

Execute o script Perl no Apache2/Redhat5.5

Estou trabalhando com uma configuração Apache2/Redhat5.5. Estou tentando configurar (e aprender) como executar scripts Perl, o 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>

Coloquei este script:http://www.seaglass.com/downloads/file_upload.plno 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 configuração incorreta e não conseguiu..."

Em seguida, verifico o log de erros para encontrar o seguinte:

[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

Responder1

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

setsebool -P httpd_enable_cgi on

Isso pressupõe que o script foi carregado corretamente. Os scripts Perl não funcionam muito bem se forem salvos em formato DOS ou carregados 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

Responder2

Para mim, parece que você pode não ter perlinstalado em sua máquina ou que pode estar em um caminho diferente de /usr/bin/perl. Tente digitar /usr/bin/perl -vem uma linha de comando para confirmar se o Perl está de fato instalado.

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

informação relacionada