2017-05-18 47 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