phpEnv局域网访问需修改Apache监听为Listen 80、设置Directory权限为Require all granted,并在Windows防火墙放行TCP 80端口;外网访问不推荐,存在安全风险。

phpEnv 是 Windows 下轻量级 PHP 本地开发环境,它默认只监听 127.0.0.1,所以局域网其他设备无法直接通过你的 IP 访问。这不是 phpEnv 本身“不支持”,而是 Apache 配置 + 系统防火墙双重限制导致的——改对两处,基本就能通。
Apache 的 httpd.conf 要放开监听范围
phpEnv 内置 Apache,其主配置文件在 phpenv\apache\conf\httpd.conf。关键不是“改成 0.0.0.0”,而是确认两点:
- 检查
Listen指令是否为Listen 80(不是Listen 127.0.0.1:80);若带 IP 前缀,删掉,只留端口 - 找到
<Directory "D:/phpenv/www">(路径以你实际安装位置为准)这一节,确认里面有这三行(顺序不重要,但必须存在):Require all granted<br>AllowOverride All<br>Options Indexes FollowSymLinks
- 特别注意:旧版 Apache(2.2)用的是
Order Deny,Allow+Allow from all,而 phpEnv 多数基于 Apache 2.4+,必须用Require all granted,写错会 403
Windows 防火墙必须放行入站 TCP 80(或自定义端口)
即使 Apache 配置全对,Windows 防火墙默认拦截所有外部对本机 80 端口的请求。不能只“关闭防火墙”,应精准添加规则:
- 打开「控制面板 → 系统和安全 → Windows Defender 防火墙 → 高级设置」
- 左侧选「入站规则」→ 右侧「新建规则」→ 选择「端口」→ TCP → 特定本地端口填
80(或你改过的比如8080) - 操作选「允许连接」,配置文件勾选「域」「专用」「公用」(局域网设备可能走“公用”网络)
- 名称随便写,比如
phpEnv-HTTP-In,完成
验证方式:在另一台局域网电脑浏览器里输入 http://192.168.x.x(替换成你主机的局域网 IP),看到 Apache 默认页或你的项目首页,就成功了。
立即学习“PHP免费学习笔记(深入)”;
phpEnv 本身不提供外网访问能力,强行暴露有风险
所谓“phpEnv 外网访问”,本质是把你的笔记本/台式机当成公网服务器——这需要:
- 你的路由器开启端口转发(将 WAN 口
80映射到你电脑的局域网 IP +80) - 你的宽带运营商未封 80 端口(国内家用宽带普遍封了,可换
8080或8081尝试) - 你有固定公网 IP(绝大多数家庭宽带是动态内网 IP,需配合 DDNS)
但更关键的是:phpEnv 无任何安全加固机制,没有 HTTPS、无访问控制、无防爆破设计。一旦开放到公网,/phpmyadmin、/test.php 这类路径极可能被自动扫描并入侵。真有外网需求,应该用云服务器部署,而不是把本地开发环境推到公网上。
调试时别依赖 $_SERVER['SERVER_ADDR'] 判断本机 IP
在 phpEnv 中执行 echo $_SERVER['SERVER_ADDR'];,大概率输出 127.0.0.1,因为 Apache 是以本地回环方式启动的。要获取真实局域网 IP,得靠系统命令:
if (PHP_OS_FAMILY === 'Windows') {
$ip = trim(shell_exec('ipconfig | findstr "IPv4" | findstr "192.168."'));
} else {
$ip = trim(shell_exec('hostname -I | awk \'{print $1}\''));
}
// 输出类似:IPv4 地址 . . . . . . . . . . . . : 192.168.3.105
这个 IP 才是你该告诉同事去访问的那个地址。记混了会导致反复折腾配置却始终连不上。



















