2012-04-21 1 views
0

로컬 컴퓨터에서 Zend MVC를 개발 중이며 준비를 위해 DreamHost 사이트를 사용하고 있습니다. ,환경 변수 관리 우수 사례

에 MyProject/공공/htaccess로이 줄을 포함하십시오 zend quick start에 따라, 내 로컬 컴퓨터에서 나는 다음과 같이 프로젝트의 공개 디렉토리에 .htaccess 파일 내에서 개발 내 APPLICATION_ENV 설정

"그러나 SetEnv APPLICATION_ENV 개발은"

이 로컬 잘 작동합니다. 하지만 내 준비 서버에서 내 app_env를 사용하려고하면 사용할 수 없습니다. 이 thread은 아마도 suexec이 백그라운드에서 실행 중이라고 제안했습니다. 나는 약간 파기를하고 충분히, Dreamhost blocks custom environment variables를했다.

"HTTP_"를 "APPLICATION_ENV"에 추가하고 public/index.php 내에 또 다른 조건을 추가하여 DH에서 제안한 첫 번째 해결 방법을 시도하여 원본 호스트 호스트와 dreamhost 호스트 호스트 모두 확인합니다.

// Define application environment 
defined('APPLICATION_ENV') || define('APPLICATION_ENV', 
    (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 
    (getenv('HTTP_APPLICATION_ENV') ? getenv('HTTP_APPLICATION_ENV') : 'production'))); 

이것은 나를 위해 작동하지 않았습니다. ssh에서조차도 명령 행에서 'env'를 실행하면 내 application_env가 나열되지 않습니다. CGI 스크립트로 작업하지 않으므로 두 번째 및 세 번째 해결 방법을 신경 쓰지 않았습니다.

TL; DR

그래서, 지금까지의 내가 그것을 이해, 내 옵션, 내 자신의 설정 시스템 (다른 파일로 app_env을 저장을 만들 것 같다 공공/index.php를에서 해당 파일을로드하는 중입니다 옵션 2를 고려해 볼 가치가있는 것보다 더 많은 작업을하거나 app_env를 기본 위치에 '단단하게'코딩하십시오. 위의 코드 예제에서 '생산'대신에 '준비'라고 말하면됩니다. 만약 내가 후자와 함께 간다면 .gitignore public/index.php 파일을 만들어야하는데, 이것은 약간 이상하게 보입니다. 그 전에는 필자가 그 파일을 변경할 필요가 없었으며, 파일을 엉망으로 만들지 않는다면 더 좋을 것이라고 생각할 것입니다. 생각 하시겠습니까? 제안? 추가 해결 방법은 무엇입니까?

+0

어떤 웹 서버를 사용하고 있습니까? –

+0

dreamhost.com. 지금 당장은 불만 스럽습니다. – dsulli

+0

어떤 소프트웨어가 실행되는지, 아파치, nginx, 젠드 서버 등 ... –

답변

1

동일한 문제가 발생했습니다. 그러나 그것이 보이는 것만 큼 크지는 않습니다. index.php가 설정되면 절대 변경되지 않으므로 버전 제어에서 제외 시켜도됩니다.

개발자 코드, 준비 서버 및 프로덕션 서버의 APPLICATION_ENV 정의를 하드 코딩하여 잊어 버리십시오.

저는 ZF로 2 년 동안 개발해 왔으며 마지막으로 각 서버에 대해 설정하는 것 외에 index.php를 변경 한 것을 기억하지 못합니다. 단지 한 줄만 변경하는 것입니다.

tl; dr 귀하의 상황에서 하드 코딩 APPLICATION_ENV 이외의 작업을 수행 할 필요가 없습니다.

+1

도움을 주셔서 감사합니다. 약 3 개월 만 zend에서 작업 했으므로이 경험으로 좋은 관점을 얻을 수 있습니다. – dsulli

+0

문제 없습니다. 프로젝트에 신이 있습니다. – vascowhite