Página 1 de 1

Script de Perl no se ejecuta al correrlo con el navegador

NotaPublicado: 2009-09-10 08:25 @392
por jrcarranza
¡Hola!

Tengo un Debian con Apache2, PHP y Perl.

En Apache tengo la siguiente configuración:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  ScriptAlias /cgi-bin/ /var/www/ppr/cgi-bin/
  <Directory "/var/www/ppr/cgi-bin/">
      AllowOverride None
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
      Order allow,deny
      Allow from all
  </Directory>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Y dentro de esa carpeta tengo un script en Perl; si lo ejecuto desde la consola me corre perfectamente y los resultados son satisfactorios, de hecho si lo redirecciono a un archivo html y lo abro, éste me genera el resultado que deseo, pero al ejecutarlo en el navegador, en lugar de desplegar la información, lo que hace es habilitármelo para descargarlo, como si fuese un archivo de descarga.

Y si lo descargo, el contenido es el script como tal, no el resultado que debe generarme.

Los permisos del archivo son los siguientes:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
-rwxrwxrwx 1 www-data www-data 14203 2009-09-02 12:15 estadisticas.pl
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Instalé varios módulos pero todo sigue igual
Los módulos que instalé son:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
libapache2-mod-perl2
libcgi-perl
libapache2-mod-fastcgi
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Los logs de Apache solamente dicen cuándo carga el PHP que lo contiene:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
201.196.199.46 - - [10/Sep/2009:07:22:01 -0600] "GET /admin/CUSTOM_Estadisticas.php HTTP/1.1" 200 6457
201.196.199.46 - - [10/Sep/2009:07:22:01 -0600] "GET /admin/CUSTOM_Estadisticas.php HTTP/1.1" 200 6457
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Ya no se me ocurre qué más hacer; he revisado en el foro, pero lo que he visto son casos donde son de permisos y al ejecutarlo da error de permisos, pero ese no es mi caso.

Gracias de antemano.

Re: Script de Perl no se ejecuta al correrlo con el navegador

NotaPublicado: 2009-09-10 10:35 @482
por monoswim
En Debian y derivados creo que tienes que instalar un paquete que se llama algo así como

atp-get apache-perl

Búscalo en Google que hay muuucha información...

Saludos

Re: Script de Perl no se ejecuta al correrlo con el navegador

NotaPublicado: 2009-09-10 11:40 @527
por explorer
Bienvenido a los foros de Perl en Español, jrcarranza.

La configuración de Apache que has mostrado es para activar la ejecución de CGI dentro de la carpeta /cgi-bin/, así que se supone que el URL que usa el PHP será algo como http://www.er-dominio.com/cgi-bin/programa.pl

Sería interesante ver la línea del PHP que hace la llamada. ¿Qué pasa si llamas al CGI de forma directa desde el navegador? En ese caso podrías ver los errores de funcionamiento en los ficheros de registro de funcionamiento del servidor web.

Te recomiendo que los permisos de ejecución, tanto del programa como de la carpeta cgi-bin sea 755. Los que tienes puestos ahora permitirían a cualquier usuario del sistema borrar el programa.

El único módulo que te hace falta instalar para ejecutar CGI en el Apache es el mod_cgi, pero ya viene instalado de base en las distribuciones normales de Apache. Solo es necesario que exista la línea ScriptAlias (aunque no es la única forma).

¿Has probado mi CGI mínimo para comprobar que el sistema de CGI te funciona?

Re: Script de Perl no se ejecuta al correrlo con el navegador

NotaPublicado: 2009-09-10 13:09 @589
por jrcarranza
¡Hola!
Instalé apache-perl y ahora sí me funciona.

Lo que me extraña es que me parece que es para apache1.3.

Gracias.

Re: Script de Perl no se ejecuta al correrlo con el navegador

NotaPublicado: 2009-09-10 13:57 @623
por explorer
El paquete apache-perl de Debian instala el módulo mod_perl para Apache 1.3, efectivamente.

Lo más seguro es que la instalación de ese módulo te haya modificado el fichero de configuración, porque uno de los módulos de los que depende es apache-common, que instala esos ficheros :)