Está usted en Indice > Construcción > Lenguajes > CGI > Lecciones y Paso a Paso > Cómo detectar los principales errores en aplicaciones CGI
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Cómo detectar los principales errores en aplicaciones CGI (3)

Errores de configuración en el servidor:
El último caso que puede llevar a un "Error 500", es que el servidor esté mal configurado. Netscape Commerce Server, por ejemplo, enviará un error del servidor si se utiliza POST para llamar a un programa localizado en un directorio en el que el directorio no ejecuta programas. Si el utilizar POST causa un error, al utilizar GET (en el mismo programa) se enviará el código en forma de texto como resultado. Es en resumen que el directorio donde se ejecutan los programas no está habilitado para corre programas CGI. Para corregir esto, hay que ir al archivo obj.conf (en servidores Netscape) y hacer los cambios respectivos. Hay que estar seguros y ser capaces de modificar ese archivo, o pedirle ayuda a un profesional para evitar cualquier conflicto en el servidor.

La mejor técnica para simplificar la corrección de Errores de lógica es por medio del comando Eval. Un modelo general del código para esta función sería:

{ ... código de inicialización ... }
eval("main");
if ($@) {
print "Content-type: text/plain ",
"El programa fallo porque el error $@ ocurrio.";
}
sub main { ... }

En caso de que esto cause un "Error 500", se sabe que es causado por algo fuera de la sub-rutina principal, siendo probablemente uno de los errores que se discutieron anteriormente.

Objeto no encontrado (Error 404)

El famoso "Error 404" es el de "Objeto no encontrado". Así como fácilmente nos topamos con un error similar de "Archivo no encontrado" en documentos HTML, así mismo se pueden encontrar dentro de programas CGIs por la misma razón. La solución a este problema es de revisar el URL, y la locación del archivo para asegurarse que el URL realmente apunta hacia el lugar que se cree. La relación entre la locación en el servidor y el URL correcto para referenciarlo puede ser a veces no muy obvia, particularmente si programas del servidor corren en un ambiente cerrado (donde, por razones de seguridad, los programas corren únicamente en una parte del sistema de archivos), o cuando la configuración de los archivos en el servidor especifica una locación compleja de un URL a la locación en el sistema de archivos. Hay que recordar también que algunos servidores no permiten subdirectorios en un directorios cgi-bin designados, por lo que:

http://www.maestrosdelweb.com/cgi-bin/mi_programa.cgi

podria ser valido, mientras que:

http://www.maestrosdelweb.com/cgi-bin/otros/mi_programa.cgi

fallaría por la misma razón.

El documento no contiene ninguna información (Document contains no data)

El error en inglés "Document contains no data" es un error que se da en los navegadores. Este error da a entender que el programa no envió el content-header adecuado. En otras palabras, que envió una información que no está descrita y por lo tanto que no puede ser manejada.
Las posibles explicaciones para este error son:

Error en el código:
Si el programa falla luego de haber enviado los content-header validos, no se encontrara ningún reporte de error del servidor. Alguno de los errores lógicos usuales podría causar esto (como por ejemplo que algún archivo no pudo ser abierto, declaraciones "die()", divisiones por cero, etc). Utilizando la técnica de eval() se puede arreglar cualquiera de estos errores.

Tiempo fuera en el servidor:
Si el programa toma un largo tiempo para correr, la conexión puede perderse antes de que termine de enviar la información. Tanto el servidor como el navegador pueden desistir si al parecer el programa no se apresura en terminar. Para arreglar esto, se puede ajustar el tiempo de tiempo fuera (Server timeout) del servidor, aunque en general la atención del usuario es más corta que el tiempo fuera del servidor, así que si el programa no termina rápido, probablemente se perderá de cualquier forma. Si el programa realmente toma un largo tiempo para correr, la mejor solución es hacer que los resultados estén disponibles, según se den, en lugar de esperar a que se cargue todo el paquete, hay que tratar de que el usuario reciba información y por lo tanto no se aburra. Si esto no puede ser aplicado (el programa tiene que hacer varios cálculos antes de enviar información, y por lo tanto no hay resultados intermedios que puedan ser enviados) entonces hay que adoptar otra estrategia. Una es simplemente enviar por correo los resultados hacia el usuario cuando estén listos. La otra técnica es usar métodos de "Server push" para alimentar el progreso de los reportes al usuario intermitentemente. Una recomendación es crear un indicador visual del progreso que indique el tiempo faltante y que los persuadirá a esperar en lugar de irse.



Usuarios que han visto este tema también han visto...

- Tutorial de CGI
- Redactar páginas completas con CGI
- Links aleatorios con CGI
- Diferencias entre CGI y PHP
- ¿Cual es la diferencia entre GET y POST?


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

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.


Página generada el 04-12-2008 a las 06:47:50