Je dois maintenir une variable dans ma demande. (CFM | CFC) pour définir l'environnement que l'application est actuellement sous, l'environnement étant (développement | test | Production). P>
J'aimerais définir une variable d'environnement sur le serveur lui-même, de sorte que je puisse lire sa valeur dans l'application.cfm. P>
est-ce possible? P>
3 Réponses :
Utiliser Apache que vous pourriez. Dans la configuration Apache (httpd.conf) ou votre VirtualHost si vous avez le module env Chargé, vous pouvez le faire:
#cgi['APP_ENVIRONMENT']#
Merci pour le conseil. Je ne dirige pas Apache et ne semble pas être capable de trouver le cadre dans IIS pour faire ce genre de choses: /
Cet article (à partir d'une recherche rapide Google) forums.net/p/1146779/1858505 .aspx suggère qu'il est possible dans IIS7
+1 Pour le soupçon qu'il n'est pas montré lors de la décharge de la portée CGI!
Méfiez-vous que l'approche Setenv semble ouvrir un trou de sécurité si mes tests sont corrects, au moins sur ColdFusion 8. Vous pouvez utiliser par exemple. Modifier le plugin en-têtes dans Firefox et envoyer un en-tête appelé App_Environment avec une nouvelle valeur et ColdFusion 8 décrochera la valeur envoyée à partir du navigateur, et non celle du Vhost. Selon les documents, ColdFusion crée sa variable CGI en combinant des valeurs du serveur et de la demande. Je n'ai pas cela confirmé, mais il semble que les valeurs dans la demande ont priorité. Je ne sais pas si c'est le cas dans les versions plus récentes de Coldfusion également.
Le plus facile est de définir une variable d'environnement OS (au niveau du système ou pour les exécutions de ColdFusion utilisateur sous) et redémarrez le service. La variable est ensuite disponible dans la portée CGI:
<cfset System = CreateObject("java", "java.lang.System")> <cfset EnvName = System.getProperty("com.mycompany.environment")> <cfoutput>#EnvName#</cfoutput>
yay, ça marche. Merci beaucoup. BTW, comment gars-tu ce genre de séparation?
La séparation des morceaux de code qui doivent être exécutés uniquement sur Dev / Test / Boîtes de production.
Lorsque vous modifiez votre message, faites un coup d'œil sur la droite (dans la boîte d'aide) et vers le haut (sur les différents boutons de l'éditeur). ;-)
En fait, je parlais de la séparation dans votre application.cfm et non dans la publication;)
Oh. Bois / arbres, vous connaissez l'histoire. :- Je pense que c'est du matériel pour une question distincte, pas pour une discussion hors de vision dans certains commentaires. Je vous recommande de résumer le problème dans une nouvelle question et de voir ce que les gens montent. :)
J'aime l'approche JVM - je renifle actuellement des détails dans la portée du serveur, mais c'est beaucoup mieux - merci pour le conseil
Ma première réflexion sur la lecture de la question était de définir une variable de serveur: p>
p>
Mais alors le problème est, où définir cela? P>
dans cf9 il y aura une méthode Onserverstart () pour ce genre de chose. P>
Mais alors vous devez maintenir cela dans chaque application que vous avez, n'est-ce pas? SetenV et l'option -D sont définis sur le serveur lui-même i>. aucune idée de ce que j'aurais dû le mettre différent :)
Non, le serveur Scoped vars est disponible pour l'ensemble de votre serveur Coldfusion. Vous pensez peut-être à la portée de la demande. En ce qui concerne une variable CGI est pratique car il fonctionnera également sur des serveurs d'applications.