2014-10-09 1 views
1

그래, 다중 환경을 Laravel Docs에서 얻습니다.Laravel 4.1 웹 및 터미널 모두를위한 다중 환경 설정

  • 지역 환경
  • 준비 서버 환경
  • 프로덕션 서버

지역 환경 분명히 프로덕션 서버에서 다른 호스트 이름을 가지고 있지만 준비 서버 : 여기

내 설정이다 프로덕션 서버의 하위 도메인 (예 : dev.myapp.commyapp.com)입니다. 가상 호스트 이름으로 myapp.dev을 로컬로 사용합니다.

나는 enviornments 전환 할 수있는 다음과 같은 설정 한 :

$env = $app->detectEnvironment(function(){ 

if(strpos($_SERVER['HTTP_HOST'],'.dev') !== false) || strpos($_SERVER['HTTP_HOST'],'dev.') !== false) { 
    return 'local'; 
} 
return 'production'; 

을});

은 거의입니다. 문제는 스테이지/환경에서 라이브 데이터를 표시하거나 조작하지 않기 위해 dev/staging 환경을위한 별도의 데이터베이스 설정입니다. 이것은 터미널에서 떨어집니다. php artisan env을 실행하면 ($_SERVER['HTTP_HOST']에 대한 경고 메시지가 표시되지 않음) 생산으로 표시됩니다.

즉, 터미널을 통해 올바른 데이터베이스에서 마이그레이션이 실행되지 않습니다.

이것을 참조하는 더 좋은 방법은 무엇입니까?

답변

3
php artisan --env=staging 

에 더 도움이 필요하면 당신이 필요 지금 나를되어 보자, 그리고에 isset($_SERVER['HTTP_HOST']) 추가 탐지 코드, 그렇지 않으면 cli가 불평 할 것입니다.

+0

이 시도하고 돌아올 것입니다. 하지만 며칠이 걸릴 수도 있습니다. 감사 – TH1981

-1

시도해 본지 확실하지 않지만 도메인 대신 호스트 이름을 사용합니다. CLI 유형 hostname을 사용하는 스테이징 서 v에서 서 v의 호스트 이름을 알려줍니다.

이는 부트 스트랩을 추가 할 수 있습니다/start.php

$env = $app->detectEnvironment(array(

    'local' => array('homestead'), // Change this to your local machine hostname. 
    'staging' => array('staging_hostame'), // staging server 
    'production' => array('your-production-machine-name'), 

)); 

은이 :

+0

감사합니다.하지만 스태그 및 프로덕션에 대한 호스트 이름은 동일한 서버에있는 것과 같습니다. – TH1981