2009-06-29 2 views
6

저는 RoR 개발자입니다 만, 현재 서버를 조정할 수없는 프로젝트를 위해 CakePHP와 협력하고 있습니다. My Rails 프로덕션 서버에서 Passenger는 "프로덕션"환경을 자동으로 사용하도록 설정되어 로컬 앱 설정을 재정의합니다. 같은 일을하기 위해 cakephp 앱을 설치하고 싶습니다. CakePHP로 어떻게 그걸 정상적으로 수행합니까? 도메인 파서를 설정했는지, 아니면 core.php와 database.php를 버전 관리에서 제외 시키셨습니까? 그리고 core.php 파일 버전 제어에서 그것을 유지하는 것이 당신은 단지 하나의 Configure::write('debug', 0) * 지시어를 보유하고 여분의 파일을 만들 수 있습니다CakePHP에서 개발/프로덕션 환경을 검색하도록 설정하려면 어떻게해야합니까? 아니면 config 파일을 버전 제어에서 제외 시키려면 어떻게해야합니까?

답변

11

, 이것은 당신이 필요로하는 일이 될 수도 있습니다/dev에 bootstrap.php. 그렇게하면 앱에서 상수를 재사용 할 수 있습니다.

bootstrap.php :

define('IS_PROD',(isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == 'cubismedia.com') ? true : false); 

database.php :

function __construct() { 
     if (IS_PROD) { 
      $this->default = $this->prod; 
     } else { 
      $this->default = $this->dev; 
     } 
    } 

//development 
public $dev = array(
    //db settings 
); 

//production 
public $prod = array(
    //db settings 
); 
+0

완벽한 당신을 도움이 정확히 원하든 나는 – nutsmuggler

+0

다행이 문서를 찾고 있었다 :) 피드백 링크가 더 이상 작동 – Eddie

+1

을 남겨주세요. 미래에는 이러한 상황이 발생할 경우 링크에서 중요한 세부 정보를 인용하는 것이 좋습니다. – BMitch

1

사전에 감사합니다, 다비드는, 수입. 두 세계의 최고.

* 또는 데이터베이스를 들어

1

을 변경해야 할 어떤 다른 로컬 및 생산 연결 설정을 설정 한 후 파일 응용 프로그램/app_model.php을 만들어 줄 포함 할 수있다 :

class AppModel extends Model 
{ 
    var $useDbConfig = 'production'; 
} 

그런 다음 app/app_controller.php 파일을 만들고 도메인을 구문 분석하고 Configure :: Write를 사용하여 사용할 dbconfig와 다른 core.php 설정을 말할 수 있습니다.

class DATABASE_CONFIG 
{ 
    //initalize variable as null 
    var $default=null; 

    //set up connection details to use in Live production server 
    var $prod = 
     array(
      // ... 
     ); 

    // and details to use on your local machine for testing and development 
    var $dev = 
     array(
      // ... 
     ); 

    function __construct() 
    {  
     if(isset($_SERVER['SERVER_NAME'])){ 
      switch($_SERVER['SERVER_NAME']){ 
       case 'digbiz.localhost': 
        $this->default = $this->dev; 
        break; 
       case 'digbiz.example.com': 
        $this->default = $this->prod; 
        break; 
      } 
     } 
     else // we are likely baking, use our local db 
     { 
      $this->default = $this->dev; 
     } 
    } 
} 
7

이 자극을 정의하기 위해 더 좋을 수도 다음 DATABASE_CONFIG 생성자를 오버라이드 (override),

Automatically choose database connections in CakePHP

간단히 : 제가 질문을 제대로 이해하면

+1

이것은 기본적으로 내가하는 일이지만, 나는 core.php에서 레벨을 올린다. 나는 "APPLICATION_ENV"라는 상수를 설정하여 코드의 다른 위치에서 참조 할 수 있으며 데이터베이스 호스트, API 키 등과 같이 상수를 정의하는 환경 설정 파일을로드 할 수도 있습니다 (구성 값도 작동합니다). –

관련 문제