« Apache/CGI » : différence entre les versions
m Révocation des modifications de 41.107.152.129 (discussion) vers la dernière version de JackPotte |
|||
Ligne 21 : | Ligne 21 : | ||
En fait le chemin <code>/cgi-bin/</code> n'existe pas vraiment, il est dirigé vers le chemin des scripts défini par la directive, et cela permet d'écrire des URL comme <code><nowiki>http://serveur/cgi-bin/mon_script</nowiki></code>. |
En fait le chemin <code>/cgi-bin/</code> n'existe pas vraiment, il est dirigé vers le chemin des scripts défini par la directive, et cela permet d'écrire des URL comme <code><nowiki>http://serveur/cgi-bin/mon_script</nowiki></code>. |
||
=== ExecCGI === |
=== ExecCGI === |
||
La clause suivante active l'option <code>ExecCGI</code> dans <code>/var/www/cgi-bin</code>, ce qui autorise Apache à exécuter les scripts sur le serveur : |
La clause suivante active l'option <code>ExecCGI</code> dans <code>/var/www/cgi-bin</code>, ce qui autorise Apache à exécuter les scripts sur le serveur : |
||
<Directory /var/www/cgi-bin> |
<Directory /var/www/cgi-bin> |
||
Ligne 27 : | Ligne 27 : | ||
</Directory> |
</Directory> |
||
Par exemple : vous écrivez un script <code>essai.cgi</ |
Par exemple : vous écrivez un script <code>essai.cgi</code>, et vous voulez que <code>/home/httpd/cgi-bin</code> contienne les scripts. |
||
Il faut donc au moins écrire : |
Il faut donc au moins écrire : |
||
Ligne 34 : | Ligne 34 : | ||
</Directory> |
</Directory> |
||
L'appel à un script essai.cgi sera effectué par l'URL : <code>< |
L'appel à un script essai.cgi sera effectué par l'URL : <code><nowiki>http://serveur/cgi-bin/essai.cgi</nowiki></code> |
||
=== AddHandler === |
=== AddHandler === |
||
Ligne 51 : | Ligne 51 : | ||
</Directory> |
</Directory> |
||
Dans < |
Dans <code>E:/www/cgi-bin/.htaccess</code> : |
||
AddHandler cgi-script .cgi .exe .pl .py .vbs |
AddHandler cgi-script .cgi .exe .pl .py .vbs |
||
==Écrire un programme CGI== |
==Écrire un programme CGI== |
||
La contrainte principale concerne la sortie du programme. Si un programme CGI génère des données sur sa sortie standard, il doit les précéder d'un en-tête HTTP permettant de les identifier. |
La contrainte principale concerne la sortie du programme. Si un programme CGI génère des données sur sa sortie standard, il doit les précéder d'un en-tête HTTP permettant de les identifier. |
||
=== Bash === |
=== Bash === |
||
Voici un exemple de programme CGI écrit en bash : |
Voici un exemple de programme CGI écrit en bash : |
||
<source lang="bash"> |
<source lang="bash"> |
||
#!/bin/ |
#!/bin/bash |
||
# Header | transmissions politique de france |
|||
⚫ | |||
# Header |
|||
# programme infinitaire |
|||
⚫ | |||
⚫ | |||
# Fin du header |
|||
⚫ | |||
# Contenu à afficher dans le navigateur |
# Contenu à afficher dans le navigateur |
||
echo "<html><body>Hello World!</body></html>" |
echo "<html><body>Hello World!</body></html>" |
||
</source> |
</source> |
||
Ce script génère une page HTML. |
Ce script génère une page HTML. |
||
=== Perl === |
=== Perl === |
||
<source lang="perl"> |
<source lang="perl"> |
||
#!c:/perl/perl/bin/perl.exe - |
#!c:/perl/perl/bin/perl.exe -w |
||
use CGI; |
use CGI; |
||
my $query = new CGI; |
my $query = new CGI; |
||
⚫ | |||
Ray Ban 2151 357 9 Icd 9 Code For Abdominal Pain | Phoebe A |
|||
⚫ | |||
print $query->header(); |
print $query->header(); |
||
print "Hello World!" |
print "Hello World!" |
||
</source> |
</source> |
||
android jewels deluxe puzzle 38 |
|||
=== Python === |
=== Python === |
||
<source lang="python"> |
<source lang="python"> |
||
#!C:\Program Files (x86)\Python\python.exe |
#!C:\Program Files (x86)\Python\python.exe |
||
# - |
# -*- coding: UTF-8 -*- |
||
print "Content-Type: text/plain;charset=utf- |
print "Content-Type: text/plain;charset=utf-8" |
||
print |
print |
||
print "Hello World!" |
print "Hello World!" |
||
</source> |
</source> |
||
{{article détaillé|Programmation Python/L'interface CGI}} |
{{article détaillé|Programmation Python/L'interface CGI}} |
||
=== VBS === |
|||
=== VBS ===(1) FAFNIR Pulley Part # 10874 AG 10874 Ayp Nos - dewaless.info |
|||
Pour Windows<ref>http://wiki.uniformserver.com/index.php/CGI:_VBScript_CGI</ref>. |
Pour Windows<ref>http://wiki.uniformserver.com/index.php/CGI:_VBScript_CGI</ref>. |
||
<source lang="vb"> |
<source lang="vb"> |
||
Ligne 100 : | Ligne 100 : | ||
Wscript.Echo "Content-type: text/html" & vbLF & vbLF |
Wscript.Echo "Content-type: text/html" & vbLF & vbLF |
||
WScript.Echo "Hello World!" |
WScript.Echo "Hello World!" |
||
Wscript.Quit |
Wscript.Quit 0 |
||
</source> |
</source> |
||
6 อนาโตเลี[[ยDek-D.com - Writer - My.iD|ย]] |
|||
== Références == |
== Références == |
Version du 23 août 2016 à 19:25
Le CGI (Common Gateway Interface) est une norme permettant à Apache d'exécuter des programmes écrits en n'importe quel langage (Bash, C, Java, Perl, PHP, Python...), du moment qu'il est exécutable et qu'il respecte certaines contraintes d'entrées/sortie.
Configurer l'accès aux scripts CGI
Pour qu'Apache prenne en charge les scripts, il est nécessaire d'effectuer un minimum de paramétrage dans la configuration du site.
Activer le module
a2enmod cgi
ScriptAlias
La directive (de httpd.conf) :
ScriptAlias /cgi-bin/ /chemin des scripts/
précise le nom du répertoire où Apache est autorisé à exécuter des scripts CGI[1].
Exemple Unix :
ScriptAlias /cgi-bin/ /var/www/cgi-bin
Exemple Windows, utiliser le format URL (pas d'antislash) :
ScriptAlias /cgi-bin/ "C:/wamp/bin/apache/apache2.2.27/cgi-bin/"
En fait le chemin /cgi-bin/
n'existe pas vraiment, il est dirigé vers le chemin des scripts défini par la directive, et cela permet d'écrire des URL comme http://serveur/cgi-bin/mon_script
.
ExecCGI
La clause suivante active l'option ExecCGI
dans /var/www/cgi-bin
, ce qui autorise Apache à exécuter les scripts sur le serveur :
<Directory /var/www/cgi-bin> Options ExecCGI </Directory>
Par exemple : vous écrivez un script essai.cgi
, et vous voulez que /home/httpd/cgi-bin
contienne les scripts.
Il faut donc au moins écrire :
<Directory /home/httpd/cgi-bin> Options ExecCGI </Directory>
L'appel à un script essai.cgi sera effectué par l'URL : http://serveur/cgi-bin/essai.cgi
AddHandler
Cette clause permet de choisir les extensions de fichiers qui seront autorisés, ex :
AddHandler cgi-script .cgi .exe .pl .py .vbs
Récapitulatif
Exemple complet sur Windows, dans la configuration Apache :
ScriptAlias /cgi-bin/ "E:/www/cgi-bin/" <Directory "E:/www/cgi-bin/"> Options FollowSymLinks Indexes AllowOverride All Order deny,allow Allow from all Require all granted </Directory>
Dans E:/www/cgi-bin/.htaccess
:
AddHandler cgi-script .cgi .exe .pl .py .vbs
Écrire un programme CGI
La contrainte principale concerne la sortie du programme. Si un programme CGI génère des données sur sa sortie standard, il doit les précéder d'un en-tête HTTP permettant de les identifier.
Bash
Voici un exemple de programme CGI écrit en bash :
#!/bin/bash
# Header
echo "Content-type: text/html"
# Fin du header
echo ""
# Contenu à afficher dans le navigateur
echo "<html><body>Hello World!</body></html>"
Ce script génère une page HTML.
Perl
#!c:/perl/perl/bin/perl.exe -w
use CGI;
my $query = new CGI;
my $Name = $query->param('Name');
print $query->header();
print "Hello World!"
Python
#!C:\Program Files (x86)\Python\python.exe
# -*- coding: UTF-8 -*-
print "Content-Type: text/plain;charset=utf-8"
print
print "Hello World!"
- Pour plus de détails voir : Programmation Python/L'interface CGI.
VBS
Pour Windows[2].
'!c:/windows/system32/cscript //nologo
Wscript.Echo "Content-type: text/html" & vbLF & vbLF
WScript.Echo "Hello World!"
Wscript.Quit 0