【问题标题】:CodeIgniter database configuration + Doctrine CLICodeIgniter 数据库配置 + Doctrine CLI
【发布时间】:2011-07-25 05:30:47
【问题描述】:

我的config/database.php 文件包含一个简单的条件,根据它所在的服务器交换数据库凭据:

$server = $_SERVER['SERVER_NAME'];
if(($server=='localhost')||($server=='127.0.0.1'))
{
    $db['default']['hostname'] = 'MY_LOCAL_IP';
    $db['default']['username'] = 'MY_LOCAL_USERNAME';
    $db['default']['password'] = 'MY_LOCAL_PASSWORD';
    $db['default']['database'] = 'MY_LOCAL_DB';
}
else 
{
    $db['default']['hostname'] = 'MY_PROD_IP';
    $db['default']['username'] = 'MY_PROD_USERNAME';
    $db['default']['password'] = 'MY_PROD_PASSWORD';
    $db['default']['database'] = 'MY_PROD_DB';
}

我今天开始玩Doctrine,引起我注意的一件事是命令行界面。提示可以做各种各样的事情,其中​​之一是验证学说是否已正确配置以供生产使用。

但是在 CLI 中调用 ensure-production-settings 时,界面对我大喊大叫,说 SERVER_NAME 是未定义的索引。虽然这不是什么大问题,但它让我想到 Doctrine 在执行我的应用程序期间可能会在后台默默地抱怨同样的事情。

我想我可以制作两个单独的 database.php 文件 - 但在此之前 - 有没有人在更改 config/database.php 后遇到 Doctrine CLI 问题?

【问题讨论】:

    标签: php codeigniter doctrine command-line-interface


    【解决方案1】:

    $_SERVER['SERVER_NAME'] 没有设置为 CLI 模式,因为此信息是由您的网络服务器的 CGI 接口提供的(或者在使用 php 作为模块时由网络服务器本身提供)。

    你为什么不用environments呢?

    【讨论】:

    • 我不知道 CodeIgniter 有多重环境功能。谢谢!
    【解决方案2】:

    在不破坏您现在所做的事情的情况下,作为一个执行,您可以为 CLI 定义一个持久值,因为它无法识别某些环境变量...

    if(($server=='localhost')||($server=='127.0.0.1'))
    {
        $db['default']['hostname'] = 'MY_LOCAL_IP';
        $db['default']['username'] = 'MY_LOCAL_USERNAME';
        $db['default']['password'] = 'MY_LOCAL_PASSWORD';
        $db['default']['database'] = 'MY_LOCAL_DB';
    }
    else 
    {
        $db['default']['hostname'] = 'MY_PROD_IP';
        $db['default']['username'] = 'MY_PROD_USERNAME';
        $db['default']['password'] = 'MY_PROD_PASSWORD';
        $db['default']['database'] = 'MY_PROD_DB';
    }
    
    // To catch CLI
    if(defined('STDIN'))
    {
        $db['default']['hostname'] = 'MY_CLI_IP';
        $db['default']['username'] = 'MY_CLI_USERNAME';
        $db['default']['password'] = 'MY_CLI_PASSWORD';
        $db['default']['database'] = 'MY_CLI_DB';
    }
    

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 2012-06-08
      • 2016-04-14
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多