Comment utiliser getenv () dans php et SetEnv dans un fichier .htaccess avec un php-cgi compilé sur un hôte partagé
Il suffit de le mettre dans son contexte afin de clarifier la question principale:
Sur ma machine de développement, PHP5.3.1 est installé sur un serveur Apache en tant que module, j'utilise SetEnv APPLICATION_ENVIRONMENT évolution dans ma racine de l'application .fichier htaccess. Il est alors facilement accessible à partir de tout script php avec la fonction getenv('APPLICATION_ENVIRONMENT').
Sur le serveur de production, sur un sharedhost (dreamhost), j'ai compilé moi-même php5.3.1, puisqu'il n'a pas été directement pris en charge. Tout fonctionne bien sauf que la fonction getenv('APPLICATION_ENVIRONMENT') renvoie la valeur false.
Dans le sharedhost racine .htaccess pour mon domaine, je l'utilise .fichier htaccess
Options +ExecCGI
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php.cgi
<FilesMatch "^php5?\.(ini|cgi)$">
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
</FilesMatch>
Options -indexes
php5.cgi réside dans /cgi-bin et fonctionne très bien.
Bien sûr, dans mon dossier racine de l'application, j'ai un autre .htaccess définition:
SetEnv APPLICATION_ENVIRONMENT production
Mais lors de l'utilisation de la fonction getenv('APPLICATION_ENVIRONMENT"), il renvoie la valeur false, aucune idée de comment résoudre ce problème?
source d'informationauteur Steven Rosato | 2010-01-05
Vous devez vous connecter pour publier un commentaire.
Ok j'ai finalement obtenu. Sur dreamhost, il est possible d'utiliser fastcgi et donc déclarer les variables d'environnement avec elle. Il se compose de simplement ajouter ce script simple
Qui est l'endroit où mon compilé PHP5.3.1 a été situé.
chmod 744 sur ce fichier appelé l'expéditeur.fcgi qui aura permis à plus de mémoire par dreamhost du chien de garde.
Après que j'ai ajouté à mon domaine .htaccess suivantes:
maintenant dans la racine de l'application, j'ai un autre .htaccess avec:
Dans un script php est récupérable via la fonction getenv('REDIRECT_APPLICATION_ENVIRONMENT');
Pour la
SetEnv
directive de travail, votre service d'hébergement doivent avoir lamod_env
module activé...Mais, même si il est activé, peut-être que vous n'avez pas la permission d'utiliser
SetEnv
.Juste pour être sûr que le problème n'est pas dans votre code, vous pourriez vouloir vérifier la sortie de
phpinfo()
: au bas de la page, il devrait y avoir une section contenant les variables d'environnement comme on le voit à partir de PHP -- si le vôtre n'est pas là, ce n'est pas un bon signe pour vous...