2015-09-02 102 views
1

我正在尋找從本地主機到開發人員到東/西臨時環境轉換到生產而無需更改PHP文件,但我不認爲我的代碼是正確的,它可能是我的速記,我對此很陌生。速記PHP環境變量

我希望做的是說,如果本地主機然後其他如果開發,否則如果東部舞臺,否則如果舞臺西部,否則如果生產。也許有更好的方法來做到這一點?

如果有幫助,我使用Apache作爲我的本地主機和Azure在dev/staging/production中,我會同時使用,但我無法訪問Azure。

<?php 
$thisPage = "navigation"; 
define('URL_ROOT', 
      getenv('DEV_SERVER') ? 
       'http://localhost/Site/' : 
       'dev.website.net' : 
       'http://website-east.website.net/' : 
       'http://website-west.website.net/' : 
       'http://production-website.com/' 
); 
?> 
+0

希望我的編輯可以讓別人更容易閱讀您的代碼。 – MonkeyZeus

+0

對於5臺服務器中的每臺服務器,您希望從getenv('DEV_SERVER')獲得什麼輸出? – MonkeyZeus

+0

解析錯誤..... – AbraCadaver

回答

0

基於我們從上面的意見,在這裏你去:

switch(strtolower(getenv('DEV_SERVER'))) 
{ 
    case 'localhost': 
     define('URL_ROOT', 'http://localhost/Site/'); 
     break; 
    case 'dev': 
     define('URL_ROOT', 'dev.website.net'); 
     break; 
    case 'east': 
     define('URL_ROOT', 'http://website-east.website.net/'); 
     break; 
    case 'west': 
     define('URL_ROOT', 'http://website-west.website.net/'); 
     break; 
    case 'prod': 
     define('URL_ROOT', 'http://production-website.com/'); 
     break; 
    default: 
     die('Environment not defined!!'); 
} 

如果可以,那麼我會建議設置一個通用的環境變量的名稱,如getenv('SERVER_ENVIRONMENT')和使用,在您的switch()因爲DEV_SERVER暗示它只是T/F,並且除dev以外的每臺服務器都將設置爲F.

+0

謝謝!我要設置一個通用的環境變量,所以它不僅僅是T/F。 – user2966325