And*_*oev 6 php development-environment drupal conventions drupal-7
我正在尝试根据URL在Drupal中设置环境.例如,如果我转到mysite.local,它将使用localdb,它会将站点名称更改为"Local Mysite"; 如果我去mysite.com,它会自动切换到使用productiondb并将名称设置为"Mysite".
这是我用于大多数基于MVC的框架的类似设置:
define('DEVELOPMENT', 'mysite.local');
define('PRODUCTION', 'mysite.com');
switch ($_SERVER['SERVER_NAME']) {
case DEVELOPMENT:
// development server
$config['base_url'] = "http://mysite.local";
$config['title'] = "DEVELOPMENT Mysite";
$config['debug'] = 1;
break;
default:
// live server
$config['base_url'] = "http://mysite.com/";
$config['title'] = "Mysite";
$config['debug'] = 0;
break;
}
Run Code Online (Sandbox Code Playgroud)
Drupal7中是否有类似的东西(我不想使用不同的站点,只有同一站点的不同设置),并且是否存在某种需要发生这种切换的约定(我正在考虑settings.php) ).
就我个人而言,我不会将settings.php提交到版本控制中(settings.default.php是),然后只在每个环境中基于settings.default.php保留一个自定义settings.php文件。
但是,如果您更喜欢以这种方式设置环境,那么类似的内容可以在您的sites/default/settings.php 文件中使用。
define('DEVELOPMENT', 'mysite.local');
define('PRODUCTION', 'mysite.com');
switch ($_SERVER['SERVER_NAME']) {
case DEVELOPMENT:
// development server
$db_url = 'mysql://user:pass@localhost/mydb_dev';
$db_prefix = '';
$base_url = 'http://mysite.local';
$conf = array(
'site_name' => 'Development Environment',
);
break;
default:
// live server
$db_url = 'mysql://user:pass@localhost/mydb_prod';
$db_prefix = '';
$base_url = 'http://mysite.com';
$conf = array(
'site_name' => 'My Site',
);
break;
}
Run Code Online (Sandbox Code Playgroud)
请记住,对于您在此处使用的每个变量,如果它们是在 settings.php 的其他部分中定义的,则需要注释掉它们。
我还应该补充一点,我认为用于开发环境的多站点是一个坏主意,我想出于同样的原因,我更喜欢每个环境都有自己的自定义 settings.php 文件。在大多数情况下,我更喜欢保持代码可移植,因为除了我运行代码的环境的设置文件之外,我不需要对任何环境的任何代码或文件系统引用。
正如其他人在这里建议的那样,为您需要开发和部署的每个环境使用 Drupal 的多站点功能,管理起来会很疯狂。