2011-07-25 75 views
1

config/database.php文件包含一個簡單的條件是換出基於服務器它生活數據庫憑據:CodeIgniter的數據庫配置+學說CLI

$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作爲一個模塊)

回答

1

$_SERVER['SERVER_NAME']CLI模式設置,因爲這個信息是由您的Web服務器的CGI接口提供。

爲什麼不使用environments呢?

+0

我不知道笨了多環境功能。謝謝! –

0

沒有打破你做了什麼,現在,作爲一個execption,你可以爲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'; 
}