确定当前脚本是在运行服务器还是生产服务器上运行

我有脚本调用不同的URL,具体取决于它们是由我的在线站点(发布)还是我的离线本地主机(开发)处理的。我想找到一个快速的方法来找到哪个是哪个。 我可以想出一些笨重的方法来做到这一点,但是有一种明确,快速,优雅的方法吗?像
if(is_offline()) { ... }
这样的东西     
已邀请:
IIS服务器上提供了一个名为
$_SERVER["COMPUTERNAME"]
的变量,您可以使用它来确定脚本是否在开发服务器或生产服务器上运行(MYMACHINE与WWW37)。 您还可以使用
$_SERVER["HTTP_HOST"]
variable(localhost vs. www.domain.com)。 您还可以在开发服务器上创建一个空文本文件(注意不要上传它)并使用
is_file()
检查它是否存在(is_file(“。foo”)== true与false)。 如果两台服务器上的操作系统不同(WINNT与Linux),则可以检查PHP_OS。 您可以检查ѭ​​4ѭ常量内的某个路径是否存在(C:/ inetpub / wwwroot / website / vs. / home / www37 /)。 3的变体:
@include("override_server_with_local_config.php");
    
您可以查看
$_SERVER['HTTP_HOST']
以查看脚本运行的主机名。 您可以查看
$_SERVER['REMOTE_ADDR']
以查看请求页面IP的用户是否为127.0.0.1。 您可以在本地网络上ping某些内容以查看是否已连接到该网络。 您可以在代码的开头定义一个常量,在相应的机器上设置为“release”或“development”。     
最好的方法是在某处指定
production
development
的配置变量。 你可以通过主机名(
localhost
vs
www.foobar.com
)来做,但这是一个不稳定的解决方案。您也可以使用不同的主机名访问您的应用程序以进行测试。因此,显式优于隐式。     
一些检查可以使它成为可能
define('IS_LOCAL', !(
  in_array($_SERVER['HTTP_HOST'], array('localhost','127.0.0.1')) === false &&
  $_SERVER['REMOTE_ADDR'] !== '127.0.0.1' &&
  $_SERVER['REMOTE_ADDR'] !== '::1'
));
    
一个功能可以帮助
get_headers('URL')
。 get_headers Tt获取服务器发送的所有标头。检查返回的数组以检查URL的状态。返回数组的第一个元素包含URL状态。     

要回复问题请先登录注册