【问题标题】:Determine whether current script is running on development or production server确定当前脚本是在开发服务器还是生产服务器上运行
【发布时间】:2011-06-15 00:20:43
【问题描述】:

我有调用不同 URL 的脚本,具体取决于它们是由我的在线站点(发布)还是我的离线本地主机(开发)处理的。我想找到一种快速的方法来找出哪个是哪个。

我可以想出一些笨拙的方法来做到这一点,但是有没有一种确定的、快速的、优雅的方法?类似if(is_offline()) { ... }

【问题讨论】:

    标签: php localhost development-environment production-environment


    【解决方案1】:

    您可以查看$_SERVER['HTTP_HOST'] 以查看脚本在哪个主机名下运行。

    你可以查看$_SERVER['REMOTE_ADDR'],看看请求页面的IP是不是127.0.0.1的用户。

    您可以 ping 本地网络上的某些内容以查看您是否已连接到它。

    您可以在代码开头定义一个常量,在相应的机器上设置为“发布”或“开发”。

    【讨论】:

    • 如果他使用 ipv6 会失败。
    • 如果他在国际空间站上也会失败,这同样不太可能。
    【解决方案2】:

    一个功能可以帮助get_headers('URL')

    get_headers

    Tt 获取服务器发送的所有标头。检查返回的数组以检查 URL 的状态。返回数组的第一个元素包含 URL 状态。

    【讨论】:

      【解决方案3】:

      最好的方法是在某处设置一个配置变量,指示productiondevelopment

      您可以通过主机名(localhostwww.foobar.com)来实现,但这是一个不稳定的解决方案。您也可以使用不同的主机名访问您的应用程序以进行测试。因此,显式优于隐式。

      【讨论】:

        【解决方案4】:
        1. 在 IIS 服务器上有一个名为 $_SERVER["COMPUTERNAME"] 的变量,您可以使用它来确定脚本是在您的开发服务器还是生产服务器上运行(MYMACHINE WWW37).

        2. 您也可以使用$_SERVER["HTTP_HOST"] 变量(localhostwww.domain.com)。

        3. 您也可以在您的开发服务器上创建一个空文本文件(注意不要上传它)并使用is_file() 检查它是否存在 (is_file(".foo") == true 与 false)。

        4. 如果两台服务器上的操作系统不同(WINNTLinux),您可以检查 PHP_OS。

        5. 您可以检查 __FILE__ 常量内是否存在特定路径(C:/inetpub/wwwroot/website//home/www37/ em>)。

        6. 3 的变体:@include("override_server_with_local_config.php");

        【讨论】:

        • 接受了这个,因为我已经在使用#3 的变体。并没有真正得到我正在寻找的明确答案:/。不过还是谢谢大家。
        【解决方案5】:

        进行几次检查就可以实现

        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'
        ));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多