Questions sur les CGIs
Un article de FAQ.
Les CGIs sont d'une manière générale les applications lancées depuis le serveur web. Les applications lancées utilisent des interpréteurs qui vont exécuter vos scripts: Perl, PHP version 4, PHP version 5, Python, Bash, etc... Sur lesCigales.ORG, il est possible de changer quel interpréteur va exécuter tel fichier selon l'extension dudit fichier.
Par défaut, les fichiers contenant:
- .php sont exécutés par PHP4
- .phps affichent la source au format PHP4
- .php4 sont exécutés par PHP4
- .php4s affichent la source au format PHP4
- .php5 sont exécutés par PHP5
- .php5s affichent la source au format PHP5
[modifier] Comment changer l'interpreteur selon l'extension du fichier ?
Il vous suffit, dans un fichier .htaccess, de spécifier selon le format suivant
AddType [MIME-Type] [Extension]
quel interpréteur sera utilisé pour quelle extension.
Le type MIME définit quel interpréteur est utilisé et quelle action s'en suit:
- application/x-httpd-php4 lance PHP4
- application/x-httpd-php4-source affiche la source du fichier PHP en utilisant l'interpréteur PHP4
- application/x-httpd-php5 lance PHP5
- application/x-httpd-php5-source affiche la source du fichier PHP en utilisant l'interpréteur PHP5
- application/x-httpd-perl lance Perl
- application/x-httpd-ruby lance Ruby
- application/x-httpd-python lance Python
- application/x-httpd-shell lance par défaut Bash
Exemples:
Faire en sorte que tous les scripts se terminant par .php soit lancés avec PHP5:
AddType application/x-httpd-php5 .php
Transformer vos fichiers .html en scripts PHP:
AddType application/x-httpd-php4 .html
Faire croire à tous que vous utilisez PHP alors qu'en fait, il n'en est rien:
AddType application/x-httpd-perl .php
Démonstration:
Nous crééons un script PHP très simple qui se contente d'afficher la version de PHP, et que l'on nommera script.php (pas très original, certes):
<?php echo "PHP ", phpversion(), "\n"; ?>
Par défault, le serveur exécutera tout script se terminant par .php avec PHP4. Essayons d'imiter ce comportement en utilisant un .htaccess:
AddType application/x-httpd-php4 .php
Puis vérifions, (sous GNU/Linux ou BSD, avec lynx) que tout marche bien:
$ alias lynx='lynx -source -dump' $ lynx http://member1.lescigales.org/script.php (remplacez member1.lescigales.org par votre nom d'hôte) PHP 4.4.6 $
Parfait ! Continuons donc et successivement, essayons de modifier le fichier .htaccess pour voir les sources du fichier en PHP4, puis exécuter du PHP5, et finalement voir les sources du script en PHP5:
$ echo 'AddType application/x-httpd-php4-source .php' > .htaccess $ lynx http://member1.lescigales.org/script.php<?php echo "PHP ", phpversion(), "\n"; ?>$ echo 'AddType application/x-httpd-php5 .php' > .htaccess $ lynx http://member1.lescigales.org/script.php PHP 5.2.1 $ echo 'AddType application/x-httpd-php5-source .php' > .htaccess $ lynx http://member1.lescigales.org/script.php<?php echo "PHP ", phpversion(), "\n"; ?>$
