Ejecute el script Perl en Apache2/Redhat5.5

Ejecute el script Perl en Apache2/Redhat5.5

Estoy trabajando con una configuración Apache2/Redhat5.5. Estoy intentando configurar (y aprender) cómo ejecutar scripts Perl, lo cual es nuevo para mí.

En mi archivo httpd.conf hice estos cambios y/o noté estas configuraciones:

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>

He colocado este script:http://www.seaglass.com/downloads/file_upload.plen el directorio /var/www/cgi-bin/.

Luego apunto mi navegador a myIpAddress/cgi-bin/file_upload.pl y aparece un "error interno del servidor... El servidor encontró un error interno o una mala configuración y no pudo..."

Luego reviso el registro de errores y encuentro esto:

[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

Respuesta1

Suponiendo que tiene SELinux habilitado, active CGI con:

setsebool -P httpd_enable_cgi on

Esto supone que el script se cargó correctamente. Los scripts de Perl no funcionan muy bien si se guardan en formato DOS o se cargan en modo binario a través de ftp. Si no copió el archivo mediante ftp (sino mediante scp o sftp), convierta el archivo con:

dos2unix file_upload.pl

Respuesta2

Esto me parece como si no lo hubieras perlinstalado en tu máquina, o que podría estar en una ruta diferente a /usr/bin/perl. Intente escribir /usr/bin/perl -ven una línea de comando para confirmar que Perl está instalado.

También es posible que le falten permisos de ejecución en /var/www/cgi-bin/file_upload.pl.

información relacionada