几年来,我一直使用通常推荐的方法来检查页面是本地调用还是远程调用,方法是检查是否$_SERVER['SERVER_ADDR']
等于 127.0.0.1 或为空。这已在其他问题中讨论过,例如this和this。其他超全局变量$_SERVER['REMOTE_ADDR']
也经常被提及。
随着时间的推移,我发现这种方法有时似乎会失败。
我真正想知道的是脚本是在我的开发服务器(xampp、wamp、IDE 调试器...)还是在生产服务器上调用的。这样可以正确设置 Web 根目录之上的脚本路径。虽然这在 99.999% 的情况下都有效,但似乎有时,当 Apache 重定向到 404 页面时,$_SERVER['SERVER_ADDR']
肯定会丢失,并且在生产服务器上运行的脚本通过了“本地”测试。
因此,我正在寻找其他方法。当然,我在 Apache 中可能做错了什么,但无论如何,最好在 php 中进行一个万无一失的测试。
我想到了几个想法,我想知道这些是否安全,或者是否有人有更好的想法。
A. 一个想法是查看当前路径:类似于
define ( 'DEV_SERVER',
(substr(
strtolower($_SERVER['DOCUMENT_ROOT']),
0,8)
=="c:/xampp")
);
B. 另一个想法是检查是否存在具有特定名称的本地文件,但访问文件系统似乎工作量太大。
提前感谢所有见解!