Php CodeIgniter数据库配置+;学说CLI

Php CodeIgniter数据库配置+;学说CLI,php,codeigniter,doctrine,command-line-interface,Php,Codeigniter,Doctrine,Command Line Interface,我的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'; $d

我的
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';
}
我今天就开始玩了,有一件事引起了我的注意,那就是命令行界面。提示符可以做各种各样的事情,其中之一就是验证条令是否正确配置用于生产

但是,在CLI中调用
确保生产设置时,界面会向我大叫,说明服务器名称是未定义的索引。虽然这不是什么大问题,但它让我想到,在我的应用程序执行过程中,条令可能会在后台默默地抱怨同样的事情


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

好吧
$\u服务器['SERVER\u NAME']
未设置为CLI模式,因为此信息由Web服务器的CGI接口提供(或者当使用php作为模块时,由Web服务器本身执行)


为什么不使用它呢?

那么
$\u服务器['SERVER\u NAME']
不是在CLI模式下设置的,因为这些信息是由Web服务器的CGI接口提供的(或者在使用php作为模块时由Web服务器本身提供的)


为什么不使用它呢?

在不破坏您现在所做操作的情况下,作为一个执行选项,您可以为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';
}

在不破坏您现在所做的操作的情况下,作为一个执行选项,您可以为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';
}

我不知道CodeIgniter有多个环境功能。谢谢!我不知道CodeIgniter有多个环境功能。谢谢!