2017-05-18 19 views
0

我想插入数据库配置语句到database.php,但无法正确的结构,我错过了单/双引号和转义报价,因为我不知道如何逃脱$数据库和只有本地主机被打印到文件。请指导如何完成。所有的配置语句都需要打印到文件中,例如database.php,现在它只打印本地主机。结构配置语句通过写入配置文件

$data = $db['$username']['hostname'] = 'localhost'; 
 
$db['$username']['username'] = 'root'; 
 
$db['$username']['password'] = ''; 
 
$db['$username']['database'] = '$username'; 
 
$db['$username']['dbdriver'] = 'mysql'; 
 
$db['$username']['dbprefix'] = ''; 
 
$db['$username']['pconnect'] = TRUE; 
 
$db['$username']['db_debug'] = TRUE; 
 
$db['$username']['cache_on'] = FALSE; 
 
$db['$username']['cachedir'] = ''; 
 
$db['$username']['char_set'] = 'utf8'; 
 
$db['$username']['dbcollat'] = 'utf8_general_ci'; 
 
$db['$username']['swap_pre'] = ''; 
 
$db['$username']['autoinit'] = TRUE; 
 
$db['$username']['stricton'] = FALSE; 
 
    if (! write_file('../dropma/application/config/database.php', $data, 'a+')) 
 
    { 
 
      echo 'Unable to write the file'; 
 
    } 
 
    else 
 
    { 
 
      echo 'File written!'; 
 
    }

回答

0

代替$data,通$db

write_file('../dropma/application/config/database.php', $db, 'a+') 

实际上,根据该文档:

https://www.codeigniter.com/userguide3/helpers/file_helper.html#write_file

参数:

$path (string) – File path 
$data (string) – Data to write to file 
$mode (string) – fopen() mode 

的 “$数据” 通过应该是一个字符串。它不工作,因为你通过一个数组...

我应该问,你为什么这样做?你为什么要创建该文件?以及该脚本将如何/在哪里放置并执行?也许这是一个更简单的方法来完成你想要做的事情。

UPDATE:

既然你想改变你的数据库设置为不同的环境(开发,督促,等等),那么我会做的是使用索引定义的ENVIRONMENT不变。 PHP来决定你的应用应该使用哪个数据库组。

这是应该已在默认情况下的index.php设置:

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development'); 

所以在database.php中,你可以做这样的事情:

switch(ENVIRONMENT){ 
    case 'staging': 
     $active_group = 'staging'; 
     break; 
    case 'production': 
     $active_group = 'prod'; 
     break; 
    default: 
     $active_group = 'dev'; 
     break; 
} 

$db['staging'] = [ 
    'dsn' => '', 
    'hostname' => '', 
    'username' => '', 
]; 
$db['prod'] = [ 
    'dsn' => '', 
    'hostname' => '', 
    'username' => '', 
]; 
$db['dev'] = [ 
    'dsn' => '', 
    'hostname' => '', 
    'username' => '', 
]; 

一旦做到这一点,所有的你必须做的是担心你可以在Apache虚拟主机文件中设置变量$_SERVER['CI_ENV']

参考:处理多个环境 https://www.codeigniter.com/user_guide/general/environments.html

+0

它说,文件写的,但没有写任何东西 – sunshine

+0

更新我的回答 – CodeGodie

+0

我这样做是为了更新我的配置文件,否则它会说无效的数据库配置,将放在AWS服务器上,我正在写一个不同的文件夹,但它适用于普通字符串,有没有办法将这个数组转换为字符串? – sunshine