2009-07-23 5 views
5

Мне нужно сохранить переменную в моем приложении. (Cfm | cfc), чтобы установить среду, в которой выполняется приложение в настоящее время, среда (разработка | test | production).Как установить всю серверную переменную в ColdFusion

Я хотел бы установить переменную окружения на самом сервере, чтобы я мог прочитать ее значение в Application.cfm.

Возможно ли это?

ответ

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 каждый раз, когда вы вносите изменения, но значение кажется довольно статическим, поэтому это не должно быть проблемой.

+0

yay, это работает. большое спасибо. Кстати, как вы, ребята, делаете такое разделение? – noobsaibot

+0

Рад слышать, как это работает. :) Что вы подразумеваете под «разъединением»? – Tomalak

+0

разделение фрагментов кода, которое должно выполняться только на dev/test/production boxes. – noobsaibot

3

Использование apache вы можете. В конфигурации Apache (httpd.conf) или ваш виртуальном хост, если у вас есть модуль ко загружены вы можете сделать это:

SetEnv APP_ENVIRONMENT DEVELOPMENT 

Тогда из ColdFusion:

#cgi['APP_ENVIRONMENT']# 

Если сбросить КГИ прицела значения не будет отображаться, но он будет там, если вы его выведете.

+0

спасибо за отзыв. Я не запускаю apache и, похоже, не могу найти параметр в iis, чтобы делать такие вещи:/ – noobsaibot

+0

этот пост (из быстрого поиска Google) http://forums.iis.net/p/ 1146779/1858505.aspx предполагает, что это возможно в iis7 – Ian

+0

+1 для подсказки, что он не отображается при сбросе области CGI! – Seybsen

0

Моя первая мысль при чтении вопрос был установить SERVER переменную:

Но проблема в том, где установить, что?

В CF9 для такого типа будет метод onServerStart().

+0

, но тогда вам придется поддерживать это в каждом приложении, которое у вас есть, не так ли? SETENV и параметр -D устанавливаются на * самом сервере *. не знаю, как я должен был бы поместить его по-разному :) – noobsaibot

+0

Нет, сервопривод SERVER доступен для всего вашего сервера ColdFusion. Возможно, вы думаете о области применения. Сделать его переменной CGI удобной, так как она будет работать и на серверах приложений. –

Смежные вопросы