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

标签 php drupal development-environment drupal-7 conventions

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

相关文章:

php - 使用 PHP 定义邮件列表

php - Drupal 7 - 向页脚区域添加内容和一段文本

javascript - 无法使用 jQuery Easy Slider 插件 - 请帮助

ruby - 为 Ruby 设置开发服务器

javascript - 在生产环境中管理快速服务器依赖关系的最佳方法

php - 计算表记录值并将计数值分配为 PHP mySQL 中的变量

php - 如何从mysql表中获取数组的单个值并在搜索中使用

php - 为什么我的 PHP 电子邮件表单会吸引垃圾邮件?

php - 德鲁帕尔 7 : Connect & Run 2 MySQL simultaneously

javascript - React 18 严格模式导致组件渲染两次