我想爲本地和離線提供不同的配置。目前,每次我將我的東西上傳到Web服務器時,我都必須確保我不會弄亂不同的配置文件。一個用於本地開發,一個用於在線。有條件配置:如何檢測我是本地還是聯機?
我稍微記得幾年前,在線和本地開發之間自動區分的代碼片段。
有沒有安全的方法來檢測?
我想爲本地和離線提供不同的配置。目前,每次我將我的東西上傳到Web服務器時,我都必須確保我不會弄亂不同的配置文件。一個用於本地開發,一個用於在線。有條件配置:如何檢測我是本地還是聯機?
我稍微記得幾年前,在線和本地開發之間自動區分的代碼片段。
有沒有安全的方法來檢測?
我通常使用服務器名稱,例如,下面是我用我的博客:
if ($_SERVER['SERVER_NAME'] === 'blog') {
// Development
} else {
// Production
}
這是因爲:
http://blog
(閒來無事後)訪問,使用VirtualHost
與ServerName
指令。ServerName
指令比這長一點,包含實際的博客服務器名稱。另一種方法:設置.htacces文件在你的開發根:
SetEnv APPLICATION_ENV development
然後閱讀:
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV')
? getenv('APPLICATION_ENV')
: 'production'));
我的回答是基本相同帕斯卡此頁面上,但由於您可能會更改您的開發服務器名稱,並且您可能需要在代碼中執行幾次此類檢查,所以我更願意這樣做:
define ('DEV_HOST', 'blog'); // if you just use http://blog locally
再檢查
if ($_SERVER['SERVER_NAME'] == DEV_HOST) {
// do your tricks
}
好點之前伊利亞 – Hexodus 2013-11-23 08:40:40
這裏是需要零配置和應該工作非常快的解決方案:
function isOnline()
{
return checkdnsrr('google.com', 'ANY');
}
我建立這個功能,它檢查當前服務器名稱有名服務器記錄,通常本地服務器沒有。
<?php
function isLocal()
{
return !checkdnsrr($_SERVER['SERVER_NAME'], 'NS');
}
?>
打我吧....再由xD – Gordon 2010-01-09 23:19:45
據接近:我已經回答了不到一分鐘,你^^ – 2010-01-09 23:20:46