2010-01-09 81 views
1

我想爲本地和離線提供不同的配置。目前,每次我將我的東西上傳到Web服務器時,我都必須確保我不會弄亂不同的配置文件。一個用於本地開發,一個用於在線。有條件配置:如何檢測我是本地還是聯機?

我稍微記得幾年前,在線和本地開發之間自動區分的代碼片段。

有沒有安全的方法來檢測?

回答

4

我通常使用服務器名稱,例如,下面是我用我的博客:

if ($_SERVER['SERVER_NAME'] === 'blog') { 
    // Development 
} else { 
    // Production 
} 

這是因爲:

  • 在我的機器,博客通過http://blog(閒來無事後)訪問,使用VirtualHostServerName指令。
  • 在生產服務器上,當然,ServerName指令比這長一點,包含實際的博客服務器名稱。
+0

打我吧....再由xD – Gordon 2010-01-09 23:19:45

+0

據接近:我已經回答了不到一分鐘,你^^ – 2010-01-09 23:20:46

1

另一種方法:設置.htacces文件在你的開發根:

SetEnv APPLICATION_ENV development 

然後閱讀:

defined('APPLICATION_ENV') 
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') 
            ? getenv('APPLICATION_ENV') 
            : 'production')); 
1

我的回答是基本相同帕斯卡此頁面上,但由於您可能會更改您的開發服務器名稱,並且您可能需要在代碼中執行幾次此類檢查,所以我更願意這樣做:

define ('DEV_HOST', 'blog'); // if you just use http://blog locally 

再檢查

if ($_SERVER['SERVER_NAME'] == DEV_HOST) { 
    // do your tricks 
} 
+0

好點之前伊利亞 – Hexodus 2013-11-23 08:40:40

0

這裏是需要零配置和應該工作非常快的解決方案:

function isOnline() 
{ 
    return checkdnsrr('google.com', 'ANY'); 
} 
2

我建立這個功能,它檢查當前服務器名稱名服務器記錄,通常本地服務器沒有。

<?php 
function isLocal() 
{ 
    return !checkdnsrr($_SERVER['SERVER_NAME'], 'NS'); 
} 
?> 
相關問題