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有多个环境功能。谢谢!