Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查PHP是否在本地服务器上运行_Php - Fatal编程技术网

检查PHP是否在本地服务器上运行

检查PHP是否在本地服务器上运行,php,Php,嗯。我读了SO中的一些主题,但没有找到一个非常具体的答案 我需要用PHP检查PHP代码是否在本地或远程主机上运行。目前我使用$\u SERVER['SERVER\u NAME']进行检查,但不一致。在这种情况下,如果我用列出的IPS来运行PHP,比如 127.0.0.1或 LoalHoals,它将考虑本地,否则远程。如果我与朋友共享我的IP,我的代码仍然是本地的,但是它考虑远程,因为共享的IP没有列出。 嗯,我认为检查本地主机的IP不是一个好主意(除非你知道一个好方法)。我尝试了像gethost

嗯。我读了SO中的一些主题,但没有找到一个非常具体的答案

我需要用PHP检查PHP代码是否在本地或远程主机上运行。目前我使用
$\u SERVER['SERVER\u NAME']
进行检查,但不一致。在这种情况下,如果我用列出的IPS来运行PHP,比如<代码> 127.0.0.1或 LoalHoals,它将考虑本地,否则远程。如果我与朋友共享我的IP,我的代码仍然是本地的,但是它考虑远程,因为共享的IP没有列出。 嗯,我认为检查本地主机的IP不是一个好主意(除非你知道一个好方法)。我尝试了像
gethostbyaddr()
gethostbyname()
这样的方法,但也不能正常工作

我没有要显示的PHP代码,但我的代码基本上是:

// true = localhost
return $_SERVER['SERVER_NAME'] === '127.0.0.1';
基本的问题是:什么可以确定PHP是在本地运行的?PHP的“本地”是什么?我认为它可以解决这个问题


注意:我没有使用PHP访问CMD/Shell的权限。

检查
$\u服务器['REMOTE\u ADDR']=='127.0.0.1'
。只有在本地运行时,才会出现这种情况。请注意,这意味着服务器也是本地的。因此,如果您在服务器上运行任何向PHP页面发出请求的脚本,它们也将满足此条件


如果有人通过web访问您的站点,无论使用何种代理,您看到的IP地址永远不会是127.0.0.1(或IPV6的::1)。(当然,除非您自己在同一台服务器上运行代理;)

据我所知,只有您才能知道哪些地址是本地地址或非本地地址。您的网络可以使用看起来根本不在本地的IP地址进行设置。据我所知,PHP无法自行确定这一点。

我就是这样做的,我发现这比尝试检测
127.0.0.1
更可靠:

if( strpos(gethostname(), '.local') !== false ) { }

基本上,我工作站上的主机名都附加了
.local
。您可以将其更改为完全匹配工作站的主机名。

您可以像大多数PHP框架一样,在应用程序的引导阶段设置一个标志,定义代码在哪个环境中运行。以最简单的形式:

// the setting when run on a dev machine
define('ENV', 'local');
这是一个简单的例子:

if ( ENV == 'local' )
{
    // do stuff
}

这个问题毫无意义。从PHP的角度来看,它总是在本地服务器上运行。什么是“本地”呢?对于perl,我在本地机器上的文件系统中添加了一个文件local.txt,并检查了它的存在性。NullUserException:这就是问题所在:(虫族:正是我的问题!:D user4035:我想,这可能是唯一可能的解决方案。@DavidRodrigues好吧,你想实现什么?为什么需要它?“只有在本地运行时才是这样”—你想说“如果从同一台机器请求”请求可能是远程的,但PHP始终在本地运行。如果您在virtualbox或vmware下运行,他们会为您分配不同的ip—这是一篇旧文章,但仍然与Google相关—“PHP检测是否在本地或本地服务器上运行”/