Página 1 de 2

No me ejecuta los nuevos archivos *.pl que creo

NotaPublicado: 2009-04-14 12:38 @568
por Perl
Hola, pido ayuda ya que ando todavía un poco pez en este asunto, aunque éste no me parece un problema de alguien principiante.

He estado haciendo programillas en Perl y aprendiendo algo pero resulta que ahora cualquier archivo nuevo que creo no me lo ejecuta. Solo me ejecuta los antiguos. De hecho he llegado a copiar el código de uno que me funciona perfectamente en uno nuevo, solo que con otro nombre y no me lo ejecuta.

Agradecería mucho ayuda al respecto, un saludo.

NotaPublicado: 2009-04-14 12:48 @575
por explorer
Estamos hablando de CGI porque estamos en el foro del mismo.

¿Has mirado si están puestos los permisos de ejecución? ¿En qué sistema operativo estás? ¿Qué servidor web? ¿No puedes poner un ejemplo de CGI que no funciona?

NotaPublicado: 2009-04-14 13:01 @584
por Perl
A ver, me explayo:
Tengo Debian Lenny con Apache y tengo los permisos perfectamente como los archivos que se me ejecutan sin problemas pongo ahora el código de un programa que me funciona en el archivo en el que lo hice pero que ahora lo copio y pego en uno nuevo y no me lo ejecuta.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#! /usr/bin/perl

my $TipoContenido = "Content-type: text/html";
my $Inicio = "<html><head><TITLE>Perl</TITLE></head><body>";
my $Titulo = "<h1>HTML desde Perl</h1>";
my $Texto = "<p>Contexto generado desde un CGI Perl.</p>";
my $Fin = "</body></html>";

# Enviamos la pagina
print "$TipoContenido\n\n";
print "$Inicio\n$Titulo\n$Texto\n$Fin";
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2009-04-14 13:05 @586
por explorer
Has dejado una línea en blanco, arriba del todo.
Y no me gusta el espacio en blanco que hay después del '#!'. Está permitido, pero... no me gusta...

NotaPublicado: 2009-04-14 13:34 @606
por Perl
No me funciona de todas formas pero he estado leyendo el tutorial de aquí sobre los cgi y he visto que si pongo esa extensión me funciona sin problemas.

¿ No te parece realmente raro ?

Además esto me pasó justo después de que crease un *.pl en mi directorio y cuando fui a copiarlo al directorio cgi-bin me decía que el archivo no existía; quería cambiar los permisos y tampoco me dejaba. Era como si no estuviese, en cambio solo me dejaba borrarlo. Y fue a partir de ahí cuando me empezó este problema.

NotaPublicado: 2009-04-14 13:42 @612
por explorer
No me parece nada raro. El que ejecute una extensión u otra depende de la configuración del servidor web.

En cuanto al tema de los permisos, habría que repasar los permisos de la carpeta o subdirectorio cgi-bin. Según cómo estén, te dejará hacer unas cosas u otras.

Recuerda que el programa pertenece a un usuario. El subdirectorio, a otro. Y pueden ser distintos del usuario que ejecuta el servidor web.

Generalmente, a ese usuario web se le dan permisos para entrar en cgi-bin y permisos de ejecución sobre los cgi.

NotaPublicado: 2009-04-14 14:22 @640
por Perl
No tengo subdirectorios y ahora ni siquiera me funciona la extensión cgi. Es más, tampoco había configurado nada en Apache y me ha estado funcionando las extensión .pl sin problemas es algo rarísimo. Con Perl no estoy haciendo mi primera toma de contacto con la programación y te aseguro que es tal te lo cuento...

NotaPublicado: 2009-04-14 14:27 @644
por explorer
Cuando digo subdirectorios me refiero al cgi-bin/.

Deberás echar un vistazo al fichero de error.log del servidor web, para saber qué error sale.

No te olvides de usar el CGI::Carp para que te muestre los errores en el navegador web, como ves en mi CGI mínimo.

NotaPublicado: 2009-04-14 14:59 @666
por Perl
He mirado el log y efectivamente:
[Tue Apr 14 21:43:34 2009] [error] [client ::1] (13)Permission denied: exec of '/usr/lib/cgi-bin/ENV.pl' failed

Al directorio cgi-bin no es posible cambiarle el usuario o el grupo como para ponerle los de Apache por ejemplo

Código: Seleccionar todo
drwxr-xr-x 2 root root 4,0K mar 30 16:35 cgi-bin


y de estos 2 el primero no se ejecuta, pero el segundo sí

Código: Seleccionar todo
-rwxr-xr-x 1 root root  533 abr 14 20:43 ENV.pl
-rwxr-xr-x 1 root root  888 abr 13 20:50 Expresiones_Regulares.pl


¿ Dónde está el truco, por favor ?

NotaPublicado: 2009-04-14 15:27 @686
por explorer
Puede estar en dos sitios.

Uno, en el contenido. Podría haber un problema en la cabecera como te comenté antes.

Y dos, podría ser que estén afectando los atributos ACL del directorio. Un poco raro, pero podría ser.

Yo apuesto por el primer caso. ¿Has intentado ejecutarlo desde la línea de comandos?

Han ocurrido casos extraños, en los cuales había un carácter extraño en la primera fila, como un retorno de carro msdos, que al ser invisible, no lo vemos. La solución es borrar la línea y volver a escribirla bien.