在PHP中识别开发与生产服务器

Ann*_*rom 24 php

我每天使用两个应用程序服务器:一个开发,一个生产.来自不同开发人员的各种应用程序都存在于这些盒子上,以及一些通过cron运行的脚本.目前,我正在使用httpd 的-D标志,以便我可以在代码中识别我的生产服务器,即.isset($_SERVER['DEV']).不幸的是,这对于从命令行运行的脚本不起作用,因为它们不在Apache的保护伞下.

从本质上讲,我想要一种清晰,简单的方法来识别每行代码可用的开发与生产.

我已经排除了:

  • auto_prepend_file - 我们已经在某些应用程序中使用此指令,并且您不能有多个自动重新上载.

我目前正在探索的内容:

  • 自定义扩展 - 我确定创建一个新的扩展,只定义一个新的常量(可能受ini设置的影响)不会是世界上最难的事情,但我没有这方面的经验.

那么,有什么技巧可以识别不涉及将代码注入每个脚本或应用程序的dev/prod?

Dig*_*oss 22

使用环境变量

只需设置一个环境变量.它适用于Windows和Linux,它们现在甚至被称为相同的东西.然后检查一下$_ENV["DEVVSPROD"]


Ali*_*xel 8

我通常只做这样的事情:

if ($_SERVER['HTTP_HOST'] == 'localhost') // or any other host
{
     // development
}

else
{
     // production
}
Run Code Online (Sandbox Code Playgroud)

  • `define('IN_PRODUCTION',($ _SERVER ['HTTP_HOST'] ==='localhost'));` (4认同)
  • 我知道这很老了,但我想指出,这不是100%准确。如果您将生产服务器设置为捕获所有主机名(通常很常见),则有人可以将HTTP Host标头设置为localhost,并可能获得他们不应该看到的调试信息。 (2认同)