检查脚本是否在开发服务器或prod服务器上运行的更好方法

时间:2014-01-06 02:19:53

标签: php apache localhost http-status-code-404 superglobals

多年来,我一直在使用通常建议的方法来检查页面是在本地还是远程调用,方法是检查$_SERVER['SERVER_ADDR']是否等于127.0.0.1或是否为空。其他问题已在讨论过此问题,例如thisthis。其他超长球如$_SERVER['REMOTE_ADDR']也经常被提及。

随着时间的推移,我发现这种方法有时似乎失败了。

我真正想知道的是脚本是在我的开发服务器(xampp,wamp,IDE调试器......)上还是在生产服务器上调用的。这样就可以正确设置Web根目录上方脚本的路径。虽然这有99.999%的时间有效,但似乎有时,当Apache重定向到404页面时,$_SERVER['SERVER_ADDR']必须丢失,并且在生产服务器上运行的脚本会通过" local"测试。

因此,我正在寻找其他方法。当然我可能在Apache中做错了什么,但无论如何,在php中进行万无一失的测试会很好。

我想到了几个想法,我想知道这些想法是否安全,或者是否有人有更好的想法。

一个。一个想法是查看当前路径:类似

define ( 'DEV_SERVER',

           (substr(

                   strtolower($_SERVER['DOCUMENT_ROOT']),

                   0,8)

            =="c:/xampp")
);

B中。另一个想法是检查是否存在具有特定名称的本地文件,但是点击文件系统似乎太多了。

提前感谢所有见解!

1 个答案:

答案 0 :(得分:0)

你也可以试试gethostname()。

虽然,最好的方法可能只是将dev特定的东西部署到开发服务器。即将这些脚本与生产/回归测试脚本分开。您不希望这些DEV服务器特定的内容意外地被用户看到。