Как мне настроить CakePHP для обнаружения моих сред разработки / производства или я просто храню файлы конфигурации из-под контроля версий? - PullRequest
8 голосов
/ 29 июня 2009

Я разработчик RoR, но в настоящее время я работаю с CakePHP для проекта, в котором я не могу настроить сервер. На моем рабочем сервере Rails Passenger настроен на автоматическое использование среды «Production», переопределяя настройку локального приложения. Я хотел бы настроить приложение CakePHP, чтобы сделать то же самое. Как вы обычно делаете это с CakePHP? Вы настраиваете анализатор домена, или вы просто держите core.php и database.php вне контроля версий? Заранее спасибо, Davide

Ответы [ 4 ]

13 голосов
/ 29 июня 2009

Если я правильно понял вопрос, это может быть то, что вам нужно:

Автоматически выбирать соединения с базой данных в CakePHP

Вкратце, переопределить конструктор DATABASE_CONFIG:

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;
        }
    }
}
9 голосов
/ 02 июня 2013

Может быть, лучше определить prod / 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
);
1 голос
/ 29 июня 2009

Для базы данных вы можете настроить локальные и производственные параметры подключения, а затем создать файл app / app_model.php и включить строку:

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

Затем вы можете создать файл app / app_controller.php, проанализировать домены и сообщить ему, какой dbconfig использовать, и любые другие настройки core.php, используя Configure :: write.

1 голос
/ 29 июня 2009

Вы можете просто создать дополнительный файл, содержащий единственную директиву Configure::write('debug', 0)*, импортировать его в файл core.php и сохранить его вне контроля версий. Лучшее из обоих миров.

* или что еще нужно изменить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...