如何使用PHP获取服务器的本地IP地址?

aja*_*ybc 9 php apache

我正在开发一个只在企业的本地网络上运行的PHP应用程序.应用程序将使用自定义安装程序安装到服务器,就像我们使用Stunnix Advanced Webserver制作的那样.

作为使应用程序更加用户友好的一部分,我计划显示服务器的LOCAL IP,以便网络中的其他计算机只需在地址栏中输入此IP即可轻松访问应用程序.

问题是我无法获得服务器的LOCAL IP.

我试过了

SERVER_NAME(仅显示127.0.0.1)

REMOTE_ADDR(显示客户端外部IP)

SERVER_ADDR显示正确的IP,但只有当我使用完全违背其目的的IP从客户端访问它时才会这样做.

我只是想直接从服务器访问自己显示服务器的LOCAL IPhttp://localhost.

我有点确定这是不可能的.但如果是的话,请帮忙.

编辑

我正在开发一个跨平台的PHP服务器应用程序.我们将Apache,PHP安装程序和SQlite数据库作为一键安装程序与我们的PHP应用程序捆绑在一起,以使其尽可能方便用户使用.任何人都可以在运行Windows,Mac或Linux的计算机上进行部署.在用户在服务器上打开应用程序安装后,他可以看到 可以用来连接到该服务器的IP地址[本地IP]和端口.该应用程序将仅在本地网络上运行,而不是在Internet上运行.

它应该显示本地IP,就像名为Air Droid的Android应用程序一样.截图:https://lh3.ggpht.com/PmLopRm-Lj9WTnzm2MBI-bTbCLopAyqtd4C_4nvyDwLg8X0QwDbBbEREdWGHG5xku4s

Dav*_*dom 12

你在这里遇到的问题是,这不是一个静态的信息.任何给定的计算机都可以有多个与多个网卡相关联的IP地址.部分/全部/全部可能都有可用的Web服务.您询问操作系统的问题可能没有一个答案.

如果您的服务器具有简单的单IP地址配置,那么您可能最好对其进行硬编码 - 它是迄今为止最简单的选项.如果你想动态地确定它,这里有一些你希望有用的信息:

  • $_SERVER['HTTP_HOST']包含在浏览器的地址栏中键入的地址,以便访问该页面.如果您通过http://192.168.0.1/index.php在浏览器中键入(例如)来访问该页面,$_SERVER['HTTP_HOST']则会192.168.0.1.
  • 如果您使用DNS名称访问该页面,gethostbyname($_SERVER['HTTP_HOST']);则会将该DNS名称转换为IP地址.
  • $_SERVER['SERVER_NAME']包含已在Web服务器配置中配置的名称作为其服务器名称.如果您打算使用它,您也可以在PHP中对其进行硬编码.
  • $_SERVER['SERVER_ADDR']将包含服务器主IP地址的操作系统.这可能是也可能不是用于访问页面的IP地址,它可能是也可能不是绑定了Web服务器的IP地址.它在很大程度上取决于操作系统和服 如果服务器有一个IP地址,这可能是一个安全的赌注,尽管有可能包含这种情况127.0.0.1.

缺点是,没有100%可靠的方法来确定Web服务器的保证工作IP地址,而不检查发送到Web服务器的信息,以便生成您正在创建的页面,如你说totally defeats its purpose.