JavaScript无法直接获取PHP服务器IP,需由PHP通过$_SERVER['SERVER_ADDR']输出至页面或API接口,再由JS读取;推荐嵌入式写法<script>const serverIP = "<?php echo $_SERVER['SERVER_ADDR']; ?>";</script>或AJAX调用PHP接口返回JSON。

JavaScript 本身运行在浏览器中,无法直接读取 PHP 所在服务器的 IP 地址(比如 192.168.1.100 或 203.0.113.45),因为这属于服务端网络信息,前端无权访问。但可以通过让 PHP 主动告诉 JS的方式间接获取——核心思路是:PHP 把服务器 IP 输出到页面或接口里,JS 再读取它。
下面几种实用、稳定、无需额外依赖的方法:
直接在 HTML 页面中嵌入 PHP 输出的服务器 IP
适合静态嵌入、无需跨域、页面由 PHP 渲染的场景(如 .php 文件):
<script>
const serverIP = "<?php echo $_SERVER['SERVER_ADDR']; ?>";
console.log("PHP 服务器 IP:", serverIP); // 例如:192.168.1.100 或 104.28.1.42
</script>⚠️ 注意:$_SERVER['SERVER_ADDR'] 是 PHP 接收请求时绑定的本地网卡 IP,不是反向代理(如 Nginx)后的真实后端地址;若用 CDN 或负载均衡,这里返回的是你应用服务器自己的内网/公网 IP,不是客户端看到的域名所解析的 IP。
立即学习“PHP免费学习笔记(深入)”;
通过 AJAX 请求 PHP 接口获取服务器 IP
适合前后端分离项目(如 Vue/React 前端 + 独立 PHP API),且需动态获取:
PHP 接口(例如 /api/get-server-ip.php):
<?php
header('Content-Type: application/json');
echo json_encode(['server_ip' => $_SERVER['SERVER_ADDR']]);
?>JS 调用:
fetch('/api/get-server-ip.php')
.then(res => res.json())
.then(data => {
console.log("服务器 IP:", data.server_ip);
})
.catch(err => console.error("获取失败", err));✅ 这种方式可配合 CORS 配置支持跨域,也便于加权限控制或日志记录。
补充说明:哪些 PHP 变量能代表“服务器 IP”?
-
$_SERVER['SERVER_ADDR']:最常用,Web 服务器监听的 IP(推荐) -
$_SERVER['SERVER_NAME']:配置的主机名(如example.com),不是 IP -
gethostbyname($_SERVER['SERVER_NAME']):可尝试 DNS 解析,但不保证等于SERVER_ADDR(尤其有 CDN 时会错) - 不要用
$_SERVER['HTTP_HOST']或$_SERVER['REMOTE_ADDR']—— 前者是请求头里的 Host,后者是客户端 IP
不推荐的做法
- 尝试用 WebRTC、STUN 或公网 IP 查询服务(如
api.ipify.org):它们返回的是客户端出口公网 IP,和 PHP 服务器完全无关 - 试图从
window.location.host或document.domain解析 IP:域名不能直接转为服务器真实 IP,DNS 解析不可控且受缓存、CDN 影响
本质上,JS 获取 PHP 服务器 IP 不是“探测”,而是“接收 PHP 明确告知的信息”。只要 PHP 能拿到,就能安全、准确地传给前端。



















