如何在ColdFusion中设置服务器范围的变量

时间:2009-07-23 07:03:34

标签: coldfusion variables

我必须在我的应用程序中维护一个变量。(cfm | cfc)设置应用程序当前运行的环境,环境是(开发|测试|生产)。

我想在服务器本身设置一个环境变量,以便我可以在Application.cfm中读取它的值。

这可能吗?

3 个答案:

答案 0 :(得分:10)

最简单的方法是设置操作系统环境变量(在系统级别,或者为用户运行ColdFusion),然后重新启动服务。然后,该变量在CGI范围内可用:

<cfset EnvName = CGI.COLDFUSION_ENVIRONMENT>
<cfoutput>#EnvName#</cfoutput>

您还可以使用Java系统属性。在ColdFusion Administrator中,转到“服务器设置/ Java和JVM”,并将类似内容添加到“JVM参数”中:

-Dcom.mycompany.environment=development

然后您可以在ColdFusion中询问该值:

<cfset System  = CreateObject("java", "java.lang.System")>
<cfset EnvName = System.getProperty("com.mycompany.environment")>
<cfoutput>#EnvName#</cfoutput>

每次进行更改时都必须重新启动CF服务,但这个值似乎非常静态,所以这不应该是一个问题。

答案 1 :(得分:3)

你可以使用apache。在apache配置(httpd.conf)或虚拟主机中,如果加载了Env模块,则可以执行以下操作:

SetEnv APP_ENVIRONMENT DEVELOPMENT

然后来自ColdFusion:

#cgi['APP_ENVIRONMENT']#

如果您转储CGI范围,则该值不会显示,但是,如果您输出它,它将会存在。

答案 2 :(得分:0)

我在阅读问题时的第一个想法是设置一个SERVER变量:

但问题是,在哪里设置?

在CF9中,会有一种onServerStart()方法用于此类事情。