如何检查服务器是在生产环境还是开发环境?

4
我参考了这个问题关于使用PHP检查服务器环境的内容。在检查服务器是生产环境还是开发环境时,为什么要使用REMOTE_ADDR而不是SERVER_ADDR?抱歉,我感到困惑,因为我一直认为REMOTE_ADDR指的是客户端的IP地址。是否最好使用SERVER_ADDR,或者是否有其他原因选择REMOTE_ADDR

$_SERVER['REMOTE_ADDR'] 返回用户正在查看当前页面的IP地址。而 $_SERVER['SERVER_ADDR'] 返回当前脚本正在执行的服务器的IP地址。 - underscore
2个回答

2
  • SERVER_ADDR 返回当前脚本所在的服务器的IP地址。
  • REMOTE_ADDR 返回用户查看当前页面的IP地址。

您应该阅读手册。

假设以下脚本正在您的服务器上运行...

<?php
echo $_SERVER['SERVER_ADDR'];
echo $_SERVER['REMOTE_ADDR'];

第一行打印出你的服务器 IP 地址(除非你将脚本移动到其他服务器,否则不会改变)。第二行打印出当前正在查看此页面的用户的 IP 地址。(对于从不同计算机连接的不同用户,这将会发生变化)


既然是这样,那我想知道使用REMOTE_ADDR而不是SERVER_ADDR有什么好的理由吗? - Question Overflow
我觉得你还是有些困惑。你看到我放上去的例子了吗? - Shankar Narayana Damodaran
是的,我看到你写的了。我说REMOTE_ADDR是客户端的IP地址是不对的吗?脚本不应该检查服务器的IP地址来确定它所在的环境吗? - Question Overflow
你是对的,REMOTE_ADDR 指的是客户端的 IP 地址。如果你在本地环境下检查此示例,你将得到相同的地址...但当你从你的生产服务器上检查时,它会有所不同。 - Shankar Narayana Damodaran
1
那么你并没有真正回答我的问题。 - Question Overflow

0

这很简单。你提到的问题中一个答案之所以建议查看客户端IP的原因是,如果客户端从127.0.0.1 访问,就可以确定服务器是在开发环境还是生产环境,因为没有人会在生产服务器上从127.0.0.1访问。

如果我作为客户端拥有IP 127.0.0.1,那么127.0.0.1就是本地主机,我正在访问运行站点的机器,因此我不是外部访问者。

这意味着我可以在本地机器上拥有一个服务器,同时进行开发。


我可以从上面得出结论,使用 REMOTE_ADDRSERVER_ADDR 没有区别吗? - Question Overflow
不,你不能这样做。但是除非你采取一些措施,否则localhost始终是127.0.0.1。因此,如果我的客户端IP是127.0.0.1,则客户端正在访问运行服务器的同一台机器。这对于目标受众来说并不是这种情况。 - Daniel Figueroa
那么我可以说,如果客户端正在使用私有IP进行访问,则服务器也必须在私有IP上。另一方面,如果客户端正在使用公共IP进行访问,则服务器也必须在公共IP上。因此,即使它们可能不是相同的IP,但是使用这个基础来确定服务器的环境已经足够了,而且检查 REMOTE_ADDRSERVER_ADDR 并不重要。 - Question Overflow
抱歉,我不理解你的问题。 - Daniel Figueroa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接