gpt4 book ai didi

php - 根据URL设置各种环境(开发、生产)

转载 作者:可可西里 更新时间:2023-11-01 13:23:28 28 4
gpt4 key购买 nike

我正在尝试根据 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;
}

在 Drupal7 中是否已经有类似的东西(我不想使用不同的站点,只是对同一站点使用不同的设置),并且是否有某种约定需要发生这种切换(我目前正在考虑设置.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;
}

请记住,对于您在此处使用的每个变量,如果它们在 settings.php 的其他部分中定义,则需要注释掉。

我还应该补充一点,我认为以开发环境为目的的多站点不是一个好主意,我想出于同样的原因,我更喜欢每个环境都有自己的自定义 settings.php 文件。在大多数情况下,我更愿意保持代码的可移植性,因为我不需要对任何环境的任何代码或文件系统引用,除了在我运行代码的环境的设置文件中。

正如其他人在这里建议的那样,为您需要开发和搭建的每个环境使用 Drupal 的多站点功能,管理起来会很疯狂。

关于php - 根据URL设置各种环境(开发、生产),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5687739/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com