如何限制PHP脚本仅在本地主机请求时运行?

如何限制PHP脚本仅在本地主机请求时运行?,php,Php,我无法让我的php页面仅在服务器本身请求时运行 这就是我现在拥有的: if ($_SERVER['SERVER_ADDR'] == $_SERVER['REMOTE_ADDR']) { //process page } else { $this->redirect('http://' . $_SERVER['HTTP_HOST'] . '/404'); } 但是,当我卷曲它时,它不会给出任何错误或返回任何内容。如果我删除该检查,它会按预期输出HTML 我尝

我无法让我的php页面仅在服务器本身请求时运行

这就是我现在拥有的:

if ($_SERVER['SERVER_ADDR'] == $_SERVER['REMOTE_ADDR']) {
        //process page
} else {
        $this->redirect('http://' . $_SERVER['HTTP_HOST'] . '/404');
}
但是,当我卷曲它时,它不会给出任何错误或返回任何内容。如果我删除该检查,它会按预期输出HTML


我尝试重复这两个值,分别得到192.168.1.186和192.168.1.225。我确实意识到它们是不同的(这是由服务器本身运行的),但是我如何修复它呢?此代码来自

您问题的标题意味着我可以提供与您问题正文不完全匹配的答案

我对此的回应是,将整个脚本放在一个巨大的
if
语句中似乎不安全且无法维护

如果其他计算机可以运行您的脚本,比如从web访问脚本,那么您需要这样的保护

但是,如果服务器是唯一可以运行脚本的机器,为什么不把它放在只有服务器可以访问的地方呢?例如,一个目录级别高于web可访问目录,或者位于具有
700
权限的子目录中。或者使用
.htaccess
限制访问


这似乎更安全,也更易于维护。

使用服务器配置来限制文件访问更容易、更好。例如,您可以在特定目录中使用包含以下内容的
.htaccess
文件:

order deny,allow
deny from all
allow from 127.0.0.1

拒绝来自127.0.0.1(本地主机)之外的所有通信。当有人试图从另一台计算机访问这些文件时,这将返回403错误。

我尝试使用.htaccess来限制它,但脚本依赖于框架中的几个控制器(CakePHP),因此这些控制器只有在我点击URL并通过路由时才会实例化。我尝试在htaccess中将URL限制为localhost失败。您如何访问脚本?这可能会告诉我们为什么您会得到不同的IP地址。另外,您不使用CLI而不是尝试通过本地浏览器访问它有什么原因吗?选项不多,但如果无法将其置于web根目录之外,我会使用.htaccess将其锁定(始终为选项1)