2013-11-22 42 views
0

我們有一個本地MAMP環境以及所有使用不同MySQL憑證的開發和生產服務器。如何爲CMS的MySQL憑據設置不同的服務器環境

我們試圖建立我們的CMS的config.php文件使用基於對環境的正確憑據的聲明。

我們目前擁有的說法是這樣的:

<?php 
    if ($_SERVER['HTTP_HOST'] == 'domain.com') { // PRODUCTION Server 
    define('DB_SERVER', 'localhost'); 
    define('DB_USERNAME', 'db-user'); 
    define('DB_PASSWORD', 'db-password'); 
    define('DB_DATABASE', 'db-name'); 
     } else if ($_SERVER['HTTP_HOST'] == 'domain.devserver.com') { // DEV Server 
     define('DB_SERVER', 'localhost'); 
     define('DB_USERNAME', 'db-user'); 
     define('DB_PASSWORD', 'db-password'); 
     define('DB_DATABASE', 'db-name'); 
     } else { // MAMP 
     define('DB_SERVER', 'localhost'); 
     define('DB_USERNAME', 'db-user'); 
     define('DB_PASSWORD', 'db-password'); 
     define('DB_DATABASE', 'db-name'); 
     } 
?> 

但只有最後一組憑據(毫安)的不斷被使用 - 有沒有辦法在一個單一的PHP文件來做到這一點?

我們發現

其他的東西涉及使用幾個不同的文件和設置環境變量,但我們想保持它所有在一個文件中或至少在每一個客戶的網站,如果這是很有意義的。

,我們所知甚少的PHP - 任何幫助或指針在正確的方向,將不勝感激。

乾杯

+0

這是非常基本的PHP。 「怪異問題」沒有太多空間。很明顯,HTTP_HOST變量不匹配domain.com或domain.devserver.com。在頂部添加'var_dump($ _ SERVER ['HTTP_HOST'])'並在目標服務器上運行幾次。我保證,當它不起作用時,輸出將會有所不同(可能像www.domain.com)。 –

回答

0

我看不出什麼毛病上面的代碼,但也許一個開關將使其行爲正常。

switch ($_SERVER['HTTP_HOST']) { 
case "domain.com": 
    define('DB_SERVER', 'localhost'); 
    define('DB_USERNAME', 'db-user'); 
    define('DB_PASSWORD', 'db-password'); 
    define('DB_DATABASE', 'db-name'); 
    break; 
case "domain.devserver.com": 
    define('DB_SERVER', 'localhost'); 
    define('DB_USERNAME', 'db-user'); 
    define('DB_PASSWORD', 'db-password'); 
    define('DB_DATABASE', 'db-name'); 
    break; 
default: 
    define('DB_SERVER', 'localhost'); 
    define('DB_USERNAME', 'db-user'); 
    define('DB_PASSWORD', 'db-password'); 
    define('DB_DATABASE', 'db-name'); 
    break; 
} 
+0

謝謝堆 - 是的,我實際上已經嘗試過,有時它有效,有時它不會。我不確定在服務器上是否有任何可能會妨礙正常工作的內容,但是我已經三重檢查了mysql憑據,所以我很確定這不是問題。今天晚些時候我會嘗試更換版本 - 謝謝堆。 – CMSCSS

+0

有時候它有時不起作用?它是否適用於某些服務器而不適用於其他服務器? – BGundlach

+0

是的,我認爲我們需要追查爲什麼它有時不起作用,可能是MySQL用戶權限問題?歡呼 – CMSCSS

相關問題