Je ne comprends pas le mécanisme d'Apache2 dans ce scénario :
1/ Dans cet emplacement : var/www/cgi-bin/ (droits du groupe de l'utilisateur : www-data ) J'ai un CGI script (php-cgi) qui va exécuter l'application PHP + la version de l'environnement VAR :
#!/bin/bash
# file : var/www/cgi-bin/cgi-php
exec "/usr/bin/php-cgi$PHP_VERSION"
Ce script a : chmod a+x
exécuté au moment de l'exécution par l'utilisateur www-data (serveur Apache)
Toutes les versions de PHP sont situées dans le répertoire :
/usr/bin/php-cgi5.6
/usr/bin/php-cgi7.0
/usr/bin/php-cgi7.1
/usr/bin/php-cgi7.2
Toutes les versions fonctionnent bien.
2/ Dans le fichier .conf du serveur Apache, j'utilise :
<Directory "/var/www/cgi-bin">
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
AllowOverride All
</Directory>
SetEnv PHP_VERSION 7.1
ScriptAlias /cgi-bin-php/ /var/www/cgi-bin/
Action php-cgi /cgi-bin-php/php-cgi
AddHandler php-cgi .php
Quand Apache2 redémarre, je peux voir dans http : Version PHP 7.1 chargé (fonctionne bien).
3/ Si dans le fichier .htaccess je mets une autre variable PHP_VERSION, celle-ci n'est pas envoyée ?
Fichier : /var/www/html/.htaccess
SetEnv PHP_VERSION 5.6
Dans ce cas, le fichier .htaccess ne fait rien du tout. Dans http je peux voir : PHP Version 7.1
Question : Pourquoi SetEnv PHP_VERSION X.X au moment de l'exécution fonctionne (lorsque je lance Apache2).
Et pourquoi je ne peux pas définir une nouvelle variable ( SetEnv PHP_VERSION X.X ) à partir du fichier .htaccess ? Je pense qu'Apache n'envoie pas la variable $PHP_VERSION à l'environnement Shell (Ubuntu Server 16.04).
Si quelqu'un peut m'aider... Merci beaucoup.
Source : https://www.codejam.info/2014/08/apache-get-php-version-from-environment.html