关键在于PHP进程监听局域网IP且防火墙放行端口:php -S需指定本机内网IP(如192.168.1.100:8000)而非127.0.0.1或0.0.0.0,Windows防火墙须用netsh命令显式放行对应端口。

局域网能直接访问 PHP 8.0 服务,关键不在“能不能”,而在「PHP 进程是否监听了局域网 IP」和「系统防火墙是否放行端口」。默认的 php -S 内置服务器只绑定 127.0.0.1,其他设备根本连不上——这是 90% 的人配不成功的根源。
php -S 怎么监听局域网 IP(非 127.0.0.1)
PHP 内置服务器默认只响应本地请求,必须显式指定监听地址为本机局域网 IP(如 192.168.1.100),不能用 0.0.0.0 或省略。
- 先查本机局域网 IP:
ipconfig(Windows)或ip a(Linux/macOS),找到类似inet 192.168.1.100/24的地址 - 启动命令必须带完整地址+端口:
php -S 192.168.1.100:8000 router.php(router.php可选,但建议带上以支持 URL 重写) - 不能写成
php -S :8000或php -S 0.0.0.0:8000—— PHP 8.0+ 对0.0.0.0的支持不稳定,Windows 下基本无效 - 启动后,在本机浏览器访问
http://192.168.1.100:8000能打开,才说明监听成功;仅localhost:8000可用不算数
Windows 防火墙为什么总拦住 php -S
Windows Defender 防火墙会把每个新监听端口当作未知应用,默认阻止入站连接,哪怕你开了“专用网络”也不行。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- 最简解决法:临时关闭防火墙测试(控制面板 → Windows Defender 防火墙 → 启用或关闭防火墙 → 关闭)
- 正式方案:手动放行端口(推荐):
netsh advfirewall firewall add rule name="PHP80-Dev" dir=in action=allow protocol=TCP localport=8000 - 别信“允许应用通过防火墙”里勾选 php.exe ——
php -S启动的是 CLI 进程,不是注册过的服务,勾选无效 - 如果用了 WSL2,还要额外在 Windows 主机上放行端口,并确保 WSL2 的 IP 是固定的或用
localhost:8000反向代理
Apache/Nginx 配置后局域网仍 403 或无法解析 .php
集成环境(如 phpStudy、XAMPP)默认只允许本地访问,且 PHP 模块可能未启用或路径错位。
- 检查 Apache 的
httpd.conf中是否有Require local—— 必须改成Require all granted(位置在块内) - 确认
LoadModule php_module和AddHandler application/x-httpd-php .php已取消注释,且路径指向正确的php8apache2_4.dll(Windows)或libphp.so(Linux) - Linux 下常见权限问题:
chown -R $USER:www-data /var/www/html+chmod -R 755 /var/www/html,否则 Apache 以www-data用户运行时读不到文件 - 重启服务后,用
curl -I http://192.168.1.100/test.php(从另一台局域网机器执行)验证响应头是否含HTTP/1.1 200 OK,而不是超时或拒绝连接
最容易被忽略的一点:PHP 8.0 的 opcache.enable_cli=0 默认关闭,但如果你在 router.php 里用了大量 require_once,没开 opcache 会导致局域网多用户并发时响应明显变慢——这不是配置错误,是性能盲区。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










