2011-04-27 2 views
7

phing으로 빌드 스크립트에서 환경 변수를 설정하려고합니다. 이 일반적으로 다음과 같이 명령 행을 수행됩니다환경 변수를 설정하기위한 Phing exec 명령

export MY_VAR=value 

을 Phing에서 나는 다음과 같은했지만 그것은 작동하지 않습니다.

<exec command="export MY_VAR=value" /> 

답변

6

굵은 주장 :이는 PHP 스크립트를 시작 범위 내 볼 수 있도록 PHP에서 (유닉스) 쉘 변수를 수출/설정하는 방법은 없습니다.

php myfile.php (does putenv or shell_exec('export foo=bar');) 
echo $foo 

아무 것도 반환하지 않습니다. PHP는 그렇게 할 수 없으므로 둘 다 phing을 할 수 없습니다.

여러 스크립트 실행에 걸쳐 셸 환경 변수에 액세스하는 경우 (원하는 경우 원하는대로) 셸 환경 변수에 액세스하는 것은 단순한 디자인 결정과 같은 것처럼 보입니다.

나는 phing에 충실하고 그 린 숙련을 배우는 것이 좋습니다. Phing은 무국적 사고를 어느 정도 도와줍니다.

4

나는 이전에 핑 소리가 들리지 않았지만, 이것은 빌드 도구로 매우 유망 해 보인다. 게시 해 주셔서 감사합니다! phing.info의 문서를 살펴보면 다음과 같은 가능성을 발견했습니다.

# 0 한 점을 분명히하고 싶습니다. 당신은 실행중인 phing 프로세스 내부에 볼 수 있도록

prompt$ > export MY_VAR=value 
prompt$ > phing build.xml 

값에 MY_VAR을 설정하지 않는 건가요? 놀랍지 만, 이것이 빌드 스크립트를 실행하는 방법이 아닌지 이해할 수 있습니다.

# 1 나는 빌드 도구의 컨텍스트에서 exec와 같은 기능은 독립 실행 형 프로그램을 실행하기위한 것이라 생각하므로 exec가 MY_VAR을 실행하고 설정할 수 있지만이 작업은 사라지는 하위 프로세스에서 모두 발생합니다 exec가 끝나 자마자 즉시 build.xml에서 다음 태스크를 처리한다. 당신이 당신 phing 스크립트가 env_vars에 대한 특정 값으로 실행되도록하려는 경우

, 당신은 당신이

phing -DMY_VAR=value build.xml 

# 2 당신을했다 할 수있는, 그래서 아마

Command-line arguments: 
.... 
-D<property>=<value>  
    // Set the property to the specified value to be used in the buildfile 

을 시도 할 수 properites 파일을 사용하는 것이 좋습니다? 이 가까이 보이는

Phing Built-In Properties 
Property Contents 
    env.* Environment variables, extracted from $_SERVER. 

당신이

${env.MY_VAR} 

# 4처럼 뭔가에 액세스 할 ... http://www.phing.info/docs/guide/stable/chapters/appendixes/AppendixF-FileFormats.html 를 참조 build.properties

#도 3에 대한 정보를 원하시면 아래로 스크롤 당신이 정말로 원하는 것

<replacetokens> 
    <token key="BC_PATH" value="${top.builddir}/"/> 
    <token key="BC_PATH_USER" value="${top.builddir}/testsite/user/${lang}/"/> 
</replacetokens> 

도움이되기를 바랍니다.

9

나는 이것이 꽤 오래된 질문이라는 것을 알지만, 나는 그것이 최선의 방법으로 대답되었다고 생각하지 않는다. 단순히 수출을

<exec command="export MY_VAR=value ; /path/to/phpunit" /> 

와 같은 간부 태그 안에 당신의 명령을 호출 : 당신은 쉘 변수를 수출하고자하는 경우, 예를 들어 당신이 phing에서 phpunit을 실행하고 phpunit을을 호출하기 전에 수출을하고 싶어하는 말을하려고 . 그림과 같이 내보내기 명령문과 쉘 실행 파일을 세미콜론으로 분리하십시오.

$myVar = getenv('MY_VAR'); 
+0

이 정확히 내 사용 사례와 정확히 정답입니다 : 스크립트는 표준 PHP 함수를 사용하여 값에 액세스 할 수 있습니다. 당신은 학자이고 신사입니다. – Frug

+0

는 'export'가 가능하지 않지만 단일 플랫폼에 적합합니다. – ScayTrase