2009-07-23 3 views
5

응용 프로그램 (cfm | cfc)에서 응용 프로그램이 현재 실행중인 환경 (환경은 development | test | production)을 유지 관리해야합니다.ColdFusion에서 서버 전체 변수를 설정하는 방법

Application.cfm에서 값을 읽을 수 있도록 서버 자체에 환경 변수를 설정하고 싶습니다.

그럴 수 있습니까?

답변

10

가장 쉬운 방법은 OS 레벨 변수 (시스템 수준 또는 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

예. 작동합니다. 많은 감사. btw, 너희들 어떻게 그런 종류의 분리합니까? – noobsaibot

+0

다행은 그것을 듣고 작동합니다. :) "분리"란 무엇을 의미합니까? – Tomalak

+0

dev/test/production 상자에서만 실행되어야하는 코드 청크의 분리. – noobsaibot

3

아파치를 사용할 수 있습니다. 아파치 구성 (을 httpd.conf) 또는 가상 호스트에서 당신은 봉투 모듈은 당신이 할 수있는로드가있는 경우 :

ColdFusion에서에서 그런
SetEnv APP_ENVIRONMENT DEVELOPMENT 

:

#cgi['APP_ENVIRONMENT']# 

당신은 CGI 범위를 값을 덤프하는 경우 표시되지 않지만 출력하면 출력됩니다.

+0

팁 주셔서 감사합니다. 나는 아파치를 실행하지 않으며 iis에서 그런 종류의 일을 할 수있는 설정을 찾지 못하는 것 같습니다 :/ – noobsaibot

+0

이 게시물 (빠른 Google 검색에서) http://forums.iis.net/p/ 1146779/1858505.aspx는 iis7에서 가능하다고 제안합니다. – Ian

+0

+1은 CGI 스코프를 덤프 할 때 표시되지 않는다는 힌트입니다! – Seybsen

0

는 서버 변수를 설정하는 것이 었습니다 :

을하지만 문제는 곳을 설정하려면 무엇입니까?

CF9에는 이런 종류의 작업을위한 onServerStart() 메소드가 있습니다.

+0

그렇지만 모든 응용 프로그램에서이를 유지해야합니다. 그렇지 않습니까? SETENV 및 -D 옵션은 서버 자체에 설정됩니다 *. 어떻게 다른지 생각해야합니다. :) – noobsaibot

+0

아니요, SERVER 범위가 지정된 ColdFusion 서버 전체에서 사용할 수 있습니다. 당신은 APPLICATION 범위를 생각하고있을 것입니다. CGI 변수를 사용하면 응용 프로그램 서버에서도 작동하므로 편리합니다. –

관련 문제