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