标题几乎总结了:
如何从CLI使用PHP获取服务器IP地址?
使用PHP的CLI,$ _SERVER不包含服务器的IP地址,因此显而易见的解决方案是不可能的.
谢谢!
这段代码将获得*nix系统上接口"eth0"的IP地址.
// get the local hosts ip address $hostsipaddress = str_replace("\n","",shell_exec("ifconfig eth0 | grep 'inet addr' | awk -F':' {'print $2'} | awk -F' ' {'print $1'}"));
问题是,在CLI上运行PHP时,不涉及任何网络活动,因此没有IP地址.您首先需要定义的是,您想要获得什么 IP.
运行脚本的客户端的IP?
不可能,因为没有"客户".
网络接口的本地IP?
运行一些系统实用程序ifconfig
,但如果服务器有多个网络接口,则可能会获得多个IP.
的IP 一个域名,这可能会或可能不符合你正在运行的服务器?
使用gethostbyname()
,但您需要知道要查询的域.
面向公众的网络/服务器的IP?
您需要使用外部服务,例如www.whatsmyip.org(请注意,他们不喜欢这样),它会告诉您您的请求来自哪个IP.此地址是否对应于任何有用的地方是一个不同的主题.
最重要的是,如果您对$_SERVER['REMOTE_ADDR']
或感兴趣$_SERVER['SERVER_ADDR']
,它根本不适用于CLI运行的脚本.