2014-12-28 3 views
1

환경 변수로 Apache2 가상 호스트를 구성하고 해당 변수를 사이트 내에서 매개 변수로 사용하는 방법에 대한 자습서가 많이 있습니다. 그러나 문제는 PHP app/console cache를 실행하면 데이터를 지우거나 다시로드 할 때 다음과 같은 오류가 발생합니다. 존재하지 않는 매개 변수를 요청했습니다 ...Symfony2 환경 변수를 저장하는 곳

내 조명기를 다시로드하기 전에 매개 변수를 내 보내면 환경 변수가 설정되면서 오류가 사라집니다. 이 함수는 아파치를 사용하여 환경 변수를 실행하고 필요로하지 않기 때문에 적절하다. 그러나 캐시를 수동으로 지울 때이 문제가 해결되지 않습니다.

내 질문에, 실제로 그 환경 변수를 저장하려면 어떻게해야합니까?

어떤 가상 호스트가 사용되는지에 따라 사이트 특정 정보를 저장하고 싶습니다.

내가 ~/.profile bash 파일에 저장할 수는 있지만 실제로 이해할 수는 없으며 내가 읽은 모든 문서는 가상 호스트 (Apache의 경우)에 저장소라고 말합니다. 그러나 그 문서 중 아무도 웹 사이트 이외의 사이트에서 스크립트를 실행하는 것, 즉 소스를 배포 할 때 문제가되는 픽스처를 다시로드하거나, 마이그레이션을 실행하거나, 캐시를 지우는 것과 같이 언급하지 않았습니다.

도움을 주셔서 감사합니다.

+0

같은 이러한 변수에 액세스 할 심포니 내 그래서 나는 그것을 알아 낸 수 있습니다. 캐시를 지울 때, 이제'php app/console cache : clear --no-warmup'을 실행합니다. 차이점은 --no-warmup 옵션입니다. 필자의 조명기를 다시로드하기 위해 먼저 환경 변수 (기본 설정)를 내 보낸 스크립트를 만든 다음 내 조명기를 다시로드합니다. 이것은 환경 변수를 저장하는 적절한 방법입니까? 감사. – Dbl0McJim

답변

1

app/config/config.yml에 응용 프로그램 변수를 넣을 수 있습니다. 당신은 거기에 넣을 수 있습니다 : 당신이 버전 제어 시스템의 어떤 종류를 사용하는 경우

parameters: 
    your.parameter.1: value1 
    your.parameter.2: value2 

당신이 별도의 파일에 그 변수를 제외하고 버전 관리 저장소에서이 파일을 무시할 수 있습니다. 이 파일을 config.yml에 포함시켜야합니다. 당신이 app/config/example.yml 위의 변수를 넣어 예를 들어 당신은 app/config/config.yml에 추가해야합니다 :

imports: 
- { resource: example.yml } 

편집

다음과 같이 항상 매개 변수를 넣을 수 있습니다

:

parameters: 
    domain1: 
     param1: value1 
     param2: value2 
    domain2: 
     param1: value1 
     param2: value2 
    domain3: 
     param1: value1 
     param2: value2 

을 후 다음을 읽어 현재 도메인에 따라 변수를 사용할 위치의 변수 또는 현재 도메인에 따라 공통 변수를 설정하는 서비스를 설정할 수도 있습니다. 명령 행의 경우 기본값을 사용할 수 있습니다.

+0

미안하지만, 내가 필요로하는 변수는 여러 호스트에서 여러 들어오는 호출이있을 것입니다 변수를 특정 가상 호스트에서 온 것입니다. 그래도 감사합니다. – Dbl0McJim

+0

요청 읽기 기능을 사용하면 어떨까요? 그러한 변수의 예를들 수 있습니까? 귀하의 의견에 따라 답변을 업데이트했습니다. –

+0

그러면 작업은로드 된 도메인에 대한 호스트 var를 확인하고 약간의 로직을 수행하여 사용할 매개 변수 도메인을 파악합니다. 아파치 가상 호스트에 설정된 환경 변수를 사용할 수 있다면, 그 로직을 수행 할 필요가 없으며 변수가 자동으로 매개 변수로 설정됩니다. – Dbl0McJim

0

이 상황은 내 애완 동물이 아니기 때문에 환경 설정 정보에 환경 설정 정보를 넣지 않기를 바랍니다. 따라서 필요한 것은 동기화 상태를 유지해야하는 두 개의 파일입니다. 하나 개의 파일은 명령 줄을하고 아파치를위한 하나 (또는 ​​당신의 선택의 HTTP 서버) 환경 변수를 명령 행에 대한

CL: /var/www/applications/coolapp/coolapp.sh 
Apache: /var/www/applications/coolapp/coolapp.apache.conf 

사용

, 내가 내 환경을 소스 심포니 명령을 실행 언제든지 (것 이 예는) bash 쉘입니다 내가 같은 /etc/httpd/conf.d/coolapp.local을 포함 추가 사이트의 아파치 설정에서

$ . ./coolapp.sh 
$ app/console cache:clear 

.conf

<VirtualHost coolapp.local:443> 
... 
Include /var/www/applications/coolapp/coolapp.apache.conf 
... 
</VirtualHost> 

이 파일의 내용은 무엇입니까?

coolapp.sh는

export SYMFONY__APP_USER = foo 
export SYMFONY__APP_PASS = foobar01 

같은 것을 포함 할 것이며 coolapp.conf는

SetEnv SYMFONY__APP_USER fop 
SetEnv SYMFONY__APP_PASS foobar01 
그래서

내 각각의 환경을 것이다 (생산, 품질 보증, 무대, 테스트, 개발, localdev) 이 두 파일을 갖습니다. 그리고 코드에 들어 가지 않고도 언제든지 변경할 수 있습니다. 이 정확하지 않은 경우, 나는 삐 소리하는 사람을 싶습니다하지만 당신이

%app_user% 
%app_pass% 
관련 문제