Question Comment empêcher Apache d'ajouter REDIRECT_ à des variables d'environnement lors de l'exécution de php en tant que CGI?


J'utilise GridService de MediaTemple comme environnement de production pour quelques sites PHP relativement légers. Le processus de configuration des environnements de test et de transfert est fastidieux et oblige le personnel à prendre des raccourcis. J'essaie donc de mettre en place un environnement de contrôle de la qualité qui fournit un environnement similaire à GridService, mais qui me permet de le lier plus étroitement à notre environnement. processus de déploiement automatisé (la configuration de nouveaux environnements dans GridService nécessite l'utilisation de l'interface Web; mod_vhost_alias nous permettrait simplement de créer des répertoires qui sont des sous-domaines de notre URL de test).

Je suis très, très proche, mais j'ai rencontré un problème - avec PHP s'exécutant en tant que CGI, apache ajoute automatiquement REDIRECT_ à toutes les variables définies dans .htaccess (rappelez-vous que je simule GridService) à l'aide de SetEnv. Par exemple:

.htaccess

SetEnv HTTP_TEST_VAR "Some Value"

PHP

echo getenv('HTTP_TEST_VAR'); // prints ""
echo getenv('REDIRECT_HTTP_TEST_VAR'); // prints "Some Value"

Ce ne serait pas un gros problème (nous pourrions coder autour de cela), sauf que cela ne se produit pas dans GridService, et je préférerais vraiment avoir des chemins de code identiques (l'ajout d'une logique de commutation au code annulerait le point de tout le travail que nous avons fait pour obtenir la configuration de la base de code).

Pour le reste de l’arrière-plan, j’utilise une toute nouvelle instance (âgée de 2 semaines) (ve) exécutant Ubuntu, ainsi que Apache et toutes ses dépendances, et construit PHP (5.3.15) à l'aide de la chaîne de configuration d'un <?php phpinfo() ?> sur GridService, moins le support de db4.

J'apprécierais vraiment toute aide. Merci!


6
2017-08-16 16:08


origine




Réponses:


Je ne sais pas si ce sera une bonne solution, mais PHP s'exécutant en mode FastCGI (mod_fastcgi) fonctionne correctement avec les variables SetEnv sans le préfixer avec REDIRECT_.

Avait le même problème avec PHP en mode CGI, résolu en passant à FastCGI.


5
2017-08-16 16:18



Merci Andrei - je commençais à penser que cela pourrait marcher. Trouver de la documentation sur cette fonctionnalité n'a pas été facile. Je vais essayer et voir ce que je trouve. - Kurt
Je cours avec Apache 2.4 + mod_fastcgi + php-fpm, ça arrive toujours, je pense que la cause en est parce que la directive 'Alias', mais je ne sais pas comment le faire fonctionner sans cette directive. - weynhamz


Je ne pense pas que vous puissiez changer ce comportement avec php-cgi car il s'agit en réalité d'une redirection. Notez cependant que la fonction php getenv () renvoie la valeur

Retourne la valeur de la variable d'environnement varname ou FALSE si la variable d'environnement varname n'existe pas.

vous pouvez donc facilement construire une fonction qui renvoie la valeur, que ce soit REDIRECT_ ou non.


2
2017-08-16 16:30