From: Lucien Gentis httpd doit être configuré pour permettre l'exécution des
- programmes CGI, pour que vos programmes CGI puissent fonctionner
- correctement. Il existe plusieurs méthodes pour y parvenir. La configuration de httpd doit autoriser lâexécution de CGI pour que les
+ programmes CGI fonctionnent. Il existe plusieurs manières dây parvenir, qui
+ sont décrites ci-après. La prise en charge de CGI est assurée par deux modules :
+ httpd.conf. Une directive correcte
- doit ressembler à ceci :
-
- httpd.conf. Pour un MPM threadé :
+
+
Cet exemple est tiré de votre fichier de configuration
httpd.conf par défaut, si vous avez installé httpd
@@ -120,12 +136,11 @@
tant que programme CGI.
Par exemple, si une requête pour l'URL
- http://www.example.com/cgi-bin/test.pl est
- effectuée, httpd tentera d'exécuter le fichier
- /usr/local/apache2/cgi-bin/test.pl et en renverra la
- sortie. Bien entendu, le fichier doit exister, être exécutable, et
- retourner sa sortie d'une manière particulière, sinon httpd
- renverra un message d'erreur.
http://www.example.com/cgi-bin/test.py est effectuée, httpd
+ tentera d'exécuter le fichier
+ /usr/local/apache2/cgi-bin/test.py et en renverra la sortie.
+ Le fichier doit exister, être exécutable, et produire une sortie sous le
+ format attendu, sinon httpd renverra un message d'erreur.
La directive ci-dessus indique à httpd qu'il doit permettre
l'exécution des fichiers CGI. Vous devez aussi indiquer au serveur
quels fichiers sont des fichiers CGI. La directive cgi ou pl en tant que
+ extension cgi ou py en tant que
programmes CGI :
Pour indiquer un sous-répertoire cgi-bin d'un
répertoire utilisateur où tout fichier sera traité en tant que
programme CGI, vous pouvez utiliser ceci :
Il y a deux différences principales entre la programmation - "standard" et la programmation CGI.
+La programmation CGI diffère de la programmation + "standard" sur deux points.
En premier lieu, toute sortie de votre programme CGI doit être
précédée d'un en-tête
En second lieu, votre sortie doit être en HTML, ou tout autre format qu'un navigateur est en mesure d'afficher. La plupart du temps, il s'agira de HTML, mais occasionnellement, vous pouvez être - amené à écrire un programme CGI qui renvoie une image gif, ou un + amené à écrire un programme CGI qui renvoie une image GIF, ou un autre type de contenu non-HTML.
A part ces deux différences, un programme CGI ressemblera à tout @@ -256,33 +279,29 @@
L'exemple suivant est un exemple de programme CGI qui permet
d'afficher une ligne de caractères dans votre navigateur. Ecrivez
ce qui suit, enregistrez le dans un fichier nommé
- premier.pl, et placez le dans votre répertoire
+ premier.py, et placez le dans votre répertoire
cgi-bin.
Même si Perl ne vous est pas familier, vous devriez être
- capable de comprendre le fonctionnement de ce programme. La
- première ligne indique à httpd (ou à toute interface à partir de
- laquelle le programme s'exécute) que ce programme peut être
- exécuté en fournissant son fichier à l'interpréteur
- /usr/bin/perl. La seconde ligne affiche la
- déclaration du type de contenu considéré, suivie de deux paires
- "Retour chariot - Nouvelle ligne". Ceci a pour effet d'insérer une
- ligne vide après l'en-tête pour marquer la fin des en-têtes HTTP,
- et le début du corps du document. La troisième ligne affiche la
- chaîne de caractères "Bonjour tout le monde . . .". Et c'est tout
- ce dont vous avez besoin.
La première ligne indique au système dâexploitation quel interpréteur
+ utiliser. La première invocation de print affiche lâen-tête content-type
+ suivi dâune ligne vide (le \n dans la chaîne et la nouvelle
+ ligne quâajoute print()), qui matérialise la fin des en-têtes
+ HTTP. La seconde invocation de print affiche le corps. Câest là tout ce
+ dont un programme CGI a besoin pour produire une réponse.
Si vous ouvrez votre navigateur favori et lui indiquez l'adresse
ou toute autre URL correspondant à votre programme CGI, Vous
@@ -297,9 +316,8 @@ print "Hello, World.";
Vous devriez voir au moins une des quatre sorties suivantes dans
- votre navigateur lorsque vous essayez d'accéder à votre programme
- CGI depuis le web : Quatre sorties basiques pourront apparaître dans votre navigateur lorsque
+ vous essayez d'accéder à votre programme CGI depuis le web :
nobody, il suffit de lui attribuer des droits
d'exécution pour tout le monde :
En outre, si votre programme doit pouvoir accéder en lecture et/ou écriture à d'autres fichiers, ces derniers devront avoir les @@ -374,13 +394,15 @@ print "Hello, World."; CGI.
Un exemple typique de spécification de programme est le chemin
- vers l'interpréteur de script (souvent perl) que l'on
+ vers l'interpréteur de script (souvent python3) que l'on
trouve à la première ligne de votre programme CGI et qui va
ressembler à ceci :
Assurez-vous qu'il s'agit bien du chemin correct vers l'interpréteur.
@@ -425,10 +447,10 @@ print "Hello, World.";(N'invoquez pas l'interpréteur perl. Le shell et
+
(N'invoquez pas l'interpréteur python3. Le shell et
httpd doivent être capable de le déterminer à partir de l'information sur le chemin située sur
la première ligne du script.)
Si vous ne maîtrisez pas le fonctionnement de suexec, il vous
est déconseillé de l'utiliser. Pour désactiver suexec, supprimer
- simplement (ou renommez) l'exécutable SUEXEC_BIN et redémarrez le serveur. Si
après une lecture de suexec, vous
décidez quand-même de l'utiliser, tapez la commande suexec
@@ -521,7 +543,7 @@ print "Hello, World.";
variables requises se trouve dans la
Ce programme CGI basique en Perl permet d'afficher toutes les +
Ce programme CGI basique en Python permet d'afficher toutes les
variables d'environnement qui sont échangées. Deux programmes
similaires sont fournis avec la distribution de httpd et situés
dans le répertoire cgi-bin.
@@ -533,16 +555,16 @@ print "Hello, World.";
variables d'environnement aux variables de base fournies par
défaut.
Si vous écrivez des programmes CGI en Perl, des modules sont Ã
- votre disposition à CPAN. A ce
- sujet, le module le plus populaire est CGI.pm. Vous
- pouvez aussi essayer CGI::Lite, qui implémente les
- fonctionnalités strictement nécessaires, mais suffisantes pour
- la majorité des programmes.
Si vous écrivez des programmes CGI en C, vous disposez de nombreuses
- options. L'une d'elles est la bibliothèque CGIC de https://web.mit.edu/wwwdev/www/cgic.html.
Si vous écrivez des programmes CGI en Python, le module cgi
+ de la bibliothèque standard (obsolète dans Python 3.11, supprimé dans Python
+ 3.13) prenait en charge lâanalyse de formulaire. Avec les versions actuelles
+ de Python, utilisez le module urllib.parse pour analyser les
+ chaîne de paramètres et les données de formulaire. Pour des applications
+ plus complexes, orientez-vous vers un cadriciel WSGI léger, bien que cela
+ aille au-delà du domaine de la CGI traditionnelle.
Notez que les questions à propos de problèmes CGI ne doivent
+