phpenv 仅管理 php 环境,不提供 web 服务;局域网访问需搭配 apache/nginx 或改用 php -s 0.0.0.0:8000,并配置 apache 的 listen、directory 权限、servername 及 windows 防火墙放行端口,且客户端须用开发机真实内网 ip 访问。

phpEnv 本身不内置 Web 服务器,它只是 PHP 运行环境管理工具(类似 pyenv / nvm),不能直接“开启服务”或“绑定 IP”。想让局域网其他设备访问你的 PHP 项目,必须搭配 Apache、Nginx 或 PHP 内置服务器,并正确配置网络层和权限层。常见失败不是 phpEnv 配置错,而是误以为装了 phpEnv 就等于有了可外访的 Web 服务。
phpEnv 不提供 Web 服务,得靠 Apache/Nginx/PHP -S
phpEnv 只负责切换 PHP 版本、管理 php.ini 和扩展。它不启动端口、不监听请求。你看到的“localhost 能访问”,其实是 Apache(或 Nginx)在运行;如果你用的是 php -S 启动的内置服务器,默认只绑定 127.0.0.1:8000,局域网根本连不上。
- 确认当前实际使用的 Web 服务:查任务管理器有没有
httpd.exe(Apache)或nginx.exe;或者执行netstat -ano | findstr :80看哪个进程占着 80 端口 - 如果用
php -S 127.0.0.1:8000 router.php,必须改成php -S 0.0.0.0:8000 router.php才允许外部连接 - phpEnv 安装的 PHP 路径需被 Web 服务正确引用——比如 Apache 的
httpd.conf里LoadModule php_module "C:/phpenv/php/8.2/php8apache2_4.dll"这类路径必须存在且版本匹配
Apache 配置要改 Listen + Directory + Require
即使 phpEnv 和 Apache 都装好了,Apache 默认仍只允许本地访问。关键三处必须手动改:
-
Listen 80→ 保持不变即可,但若本机已有 Skype 或 IIS 占用 80 端口,得先停掉它们,或把这里改成Listen 8080,然后局域网访问时加端口(如http://192.168.1.100:8080) - 找到
<directory></directory>块(路径按你实际项目根目录调整),把里面的Require local改成Require all granted - 确认
ServerName没设成localhost——虽然不影响 IP 访问,但某些 Apache 版本会因ServerName不匹配拒绝非 localhost 请求
Windows 防火墙必须放行对应端口
很多用户改完 Apache 配置仍连不上,90% 是卡在防火墙。Windows 防火墙默认阻止所有入站连接,哪怕你开了 80 端口,也得显式放行。
- 不要关整个防火墙——风险高,且公司策略通常禁止
- 进「控制面板 → Windows Defender 防火墙 → 高级设置 → 入站规则 → 新建规则」
- 类型选「端口」→ 协议选 TCP → 特定本地端口填
80(或你实际用的端口,如8000)→ 动作选「允许连接」→ 配置文件勾选「域」「专用」「公用」(局域网属「专用」,但勾全更稳妥) - 规则名称建议写清楚,比如
Allow Apache HTTP (80),方便后续排查
局域网访问时别输 localhost,要用本机真实内网 IP
局域网其他设备浏览器里输入 localhost,访问的是它自己,不是你的开发机。必须用你的开发机在局域网中的真实 IPv4 地址,比如 192.168.1.105。
- 在开发机上打开命令提示符,运行
ipconfig,找「无线局域网适配器 WLAN」或「以太网适配器 以太网」下的IPv4 地址,忽略127.0.0.1和169.254.x.x - 确保两台设备在同一子网(比如都是
192.168.1.x),否则路由器可能隔离广播,ping 都不通 - 首次访问前,先在其他设备上
ping 192.168.1.105测试连通性;不通就先查网线/WiFi分组、路由器 AP 隔离设置
最容易被忽略的是 Apache 的 Require 指令和 Windows 防火墙规则的组合效果——改对一处,漏掉另一处,就会表现为“配置明明改了却还是 403 或连接被拒绝”。建议每次只改一项,验证后再动下一项。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











