Error de Sintaxis en el código del programa:
Cualquier error de sintaxis en el código del programa causará un error 500. Perl permite que revises la sintaxis del código en la línea de comando con la instrucción:
perl -c nombre_del_archivo.cgi
Otra opción útil es:
perl -w nombre_del_archivo.cgi
lo que le indica al compilador que muestre advertencias de posibles errores lógicos en el código.
Archivo requerido Desaparecido:
Si alguna librería ha sido especificada con los comandos "requiere" o "use" no puede ser encontrada, también se producirá un "Error 500". Comúnmente se puede detectar este error con una revisión de sintaxis, aunque en algunos casos el ambiente en el que los programas son ejecutados por el servidor, son diferentes a el ambiente especificado cuando el código corre en la línea de comando. Perl puede encontrar el archivo necesario en algunos casos, pero no en todos.
Error lógico en el programa:
Si el código tiene algún error lógico, como por ejemplo, un archivo no encontrado, una división por cero, etc, se producirá un "Error 500". Errores lógicos, particularmente los del tipo "file not found", pueden ser causados usualmente por diferencias entre ambientes de Perl al ser ejecutados bajo el servidor y bajo la línea de comando. Para encontrar el error, se recomienda imprimir la locación completa del archivo que el programa necesita puede ser de gran utilidad. Más abajo se muestra una técnica que también sirve para corregir estos errores.
Header HTTP invalido:
La primera línea que un programa debe enviar como Header HTTP debe ser valida, usualmente es:
Content-type: text/html
Esta línea que se utiliza para el Header HTTP debe ser seguido de dos líneas de espacio y para lo cual se utiliza el agregado " " antes que el contenido empieze. Precaución al compilar comentarios escritos a un error estándar: algunos servidores toman los datos de un STDOUT o STDERR, y porque STDERR es una línea de estado (Texto escrito hacia STDERR es enviada tan pronto como la línea es completada), mientras que STDOUT es un bloque de estado (Texto es enviado al ser completado el bloque), STDERR podría considerarse: "Llegar de inmediato". El siguiente código de prueba podría causar algunos errores en algunos sistemas:
#!/usr/local/bin/perl
print "Content-type: text/plain ";
print STDERR "Listo hasta aquí ";
print "Exitosamente.";
Debido a que el servidor vería "Listo hasta aquí" primero, y no le encontraría sentido al mensaje. Se puede forzar un bloque de estado en STDOUT con:
$|=1;
incluyéndolo en el inició del código del programa, lo cual es probablemente algo bueno para hacer de cualquier forma.
Versión incorrecta de Perl:
Hay que asegurarse de no tratar de correr un programa escrito para Perl5 en un interprete Perl4 (o anterior!) Para confirmar esto, escribir:
perl -e `print $]`
en la línea de comando, lo cual mostrará la versión de Perl que está instalada. Si resulta ser Perl 4, podría existir un interprete para Perl 5 instalado en el mismo directorio, pero con el nombre perl5. También hay que tomar en cuenta que algunos programas escritos para Perl 4 pueden dar problemas en Perl 5, en particular, variables que contengan "@" pueden causar errores; ésto debido a que para utilizar la arroba es necesario incluir la diagonal invertida "" antes.
Usuarios que han visto este tema también han visto...
- Lista de variables en CGI.
- Diferencias entre CGI y PHP
- Links Aleatorios
- Introducción a la interfaz CGI
- Introducción a la programación CGI en Pascal
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.