跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

phpEnv提示Connection refused by remote server 解决内网穿透

ERR_CONNECTION_REFUSED 错误源于本地 Web 服务未运行、穿透客户端配置端口不匹配、远端中继服务未监听或防火墙拦截,需依次验证服务进程、端口一致性、server 状态及网络连通性。 phpEnv 本身不报 Connection refused,这个错误一定来自你配置的穿透服务或目标服务本身。 它不是 phpEnv 的 bug,而是你本地启动的服务(比如 Apache/PHP 内置服务器)没起来,或穿透客户端没连上远端中继服务器,或远端中继服务根本没在监听指定端口。 确认本地 Web 服务是否真实运行 phpEnv 只是环境管理器,它不自动启动 Web 服务。你必须手动启动,否则穿透客户端连的是“空地址”。 执行
php -S 127.0.0.1:8000
启动内置服务器时,终端必须保持运行状态;关掉终端就等于停服 用 phpEnv 启动 Apache 后,要验证进程是否存在:
ps aux | grep httpd
(Linux/macOS)或任务管理器里搜
httpd.exe
(Windows) 浏览器直接访问
http://127.0.0.1:8000
或
http://localhost:80
,能打开才说明服务真活了;打不开就别急着配穿透 检查 frp/nps 客户端配置中的 local_port 是否匹配本地服务端口 这是最常踩的坑:本地服务监听 8000,但配置里写成
local_port = 8080
,客户端就会向一个没人监听的端口发请求,自然被拒绝。 frp 客户端配置段里,
local_port
必须和你实际启动的 PHP/Apache 端口完全一致 nps 客户端的
target
字段格式为
127.0.0.1:8000
,不能漏掉 IP 或写错冒号 改完配置后,必须重启客户端进程,
systemctl restart frpc
或杀掉旧进程再跑新命令 验证穿透服务端(server)是否正常接受连接 内网穿透是两端协作:client 把流量送出去,server 得接得住。server 挂了、防火墙拦了、token 错了,都会让 client 收到 Connection refused。 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 立即学习 “ PHP免费学习笔记(深入) ”; 登录服务器,检查服务进程:frp 用
ps aux | grep frps
,nps 用
ps aux | grep nps
确认 server 监听的是公网 IP 或
0.0.0.0
,而不是仅
127.0.0.1
(后者只能本机连) 检查云服务器安全组/防火墙:确保
server_port
(如 7000)对公网开放,且协议是 TCP 核对 client 配置里的
token
和 server 配置文件中
auth_token
是否一字不差(大小写敏感) 用 telnet 或 nc 快速定位断点在哪一环 别靠猜,用底层工具直连测试,30 秒就能分清是 client 连不上 server,还是 server 连不上你的 local_port。 在本地机器上执行:
telnet your-server-ip 7000
(frp 的 server_port)→ 如果通,说明 client 到 server 链路 OK;如果 Connection refused,问题出在 server 端或网络策略 在服务器上执行:
telnet 127.0.0.1 8000
→ 如果不通,说明你本地服务根本没起来,或没绑定到 127.0.0.1 在服务器上执行:
nc -zv 127.0.0.1 8000
(Linux/macOS)或下载
ncat.exe
(Windows)做同样测试 真正卡住的地方,往往不是配置写错了,而是某处进程没拉起来、某个端口被系统级防火墙静默丢包、或者 token 复制时多了一个不可见空格。每次改完,只动一个变量,然后用 telnet 验证,比反复重启整个链路更省时间。

相关文章