2010-01-09 52 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'); 
} 
?> 
相关问题