FTLS.org 
Francais     English
 
 
Accueil
 
 Linux
Introduction
Liens
 
 Initiation
Internet
HTML
CGI
Perl
 
 Archives
Java
Perl Tools
Scripts CGI
Scripts PHP
 
 Calculatrices
HP 48
TI 92
 
 Gratuit du Net
A Gratuit
Comparatifs
Se divertir
 
 Aide Webmasters
Trucs & Astuces
JavaScript
 
 Site
Partenaires
Contact
 
 Powered by
linux
 

Initiation


Introduction au CGI (Common Gateway Interface)



7. Debugger un script CGI

    Vous venez de terminer la lecture de ce document, d'écrire un script CGI et là lorsque vous lancer votre navigateur pour faire un test, vous voyez apparaître à la place de la sortie attendue de votre programme : "Error 500 : Internal server error" qui ne vous explique pas grand chose...

    Nous voila donc dans le coeur du problème, le programme étant lancé par le serveur HTTP il n'indique pas pourquoi il y a une erreur. C'est donc à vous de la trouver.

    La première chose à vérifier est que lorsque vous exécuter le programme manuellement il ne produise pas d'erreur, (au besoin connectez vous telnet sur le serveur) placez vous dans le répertoire 'cgi-bin' contenant le programme et exécutez le par './mon_cgi.cgi'. S'il produit une erreur, corrigez la et refaite un essais.
    Une erreur fréquente si votre CGI est un script est que la première ligne '#!/bin/sh' ou '#!/usr/bin/perl' ne correspond pas à une chemin d'interpréteur valide.

    Si l'erreur ne venait pas de là, vérifiez bien que le programme soit exécutable par tous dans le cas d'un programme compilé, et lisible et exécutable par tous dans le cas d'un script. En effet souvent le serveur exécute votre programme sous un nom d'utilisateur différent du votre (nobody). Dans ce cas, faite un petit 'chmod 555 mon_cgi.cgi' .

    Si malgré ces points il se produit toujours une erreur, toujours en le lançant manuellement, vérifier bien que le 'Content-type: text/html' soit bien suivit d'une ligne blanche, et qu'il n'y ait rien d'afficher avant. En effet dans le cas contraire le navigateur ne sait pas interpréter le résultat et produit l'erreur.
    Cela arrive souvent lorsque l'on utilise une vérification d'arguments ou de validité d'ouverture d'un fichier avant d'afficher le 'Content-type', un conseil le mettre toujours en début de programme, cela permet de voir tous les message de vérification que l'on insère sans risque d'avoir le 'Internal server error'.

    Après ces vérification votre programme devrait afficher un résultat, est-ce le résultat escompté ? si oui très bien, sinon vous devez reprendre le source pour chercher l'erreur...

    Nota : Il existe en Perl et en C des bibliothèques permettant de vous aider à debugger les CGI. N'hésitez pas à les utiliser, elles peuvent vous faire gagner un temps précieux...



 
© Copyright 2000 FTLS (Tyndiuk Frédéric). All rights reserved.
Last Update 08/03/2000 - Send all comments to webmaster@ftls.org