Workerman监听IP配置错误会导致服务无法被外部访问、netstat查不到监听、客户端连接被拒绝,需修正IP并重启;正确做法是先用php start.php status和ps aux确认进程状态,再通过netstat验证监听是否生效,接着根据场景选择0.0.0.0(对外)、127.0.0.1(仅本地)或真实网卡IP(如192.168.1.100)修改start.php中Worker构造参数,最后执行stop→start→netstat→curl四步验证。

Workerman启动脚本写错监听IP(比如把0.0.0.0误写成127.0.0.1却部署在远程服务器上,或填了不存在的内网IP),会导致服务无法被外部访问、netstat -tuln | grep 端口查不到监听、客户端连接直接拒绝,必须修正IP配置并重启进程才能恢复。
确认当前监听IP是否错误
执行php start.php status查看Worker状态,若显示Not running或Running with 0 workers,先别急着改代码——先用ps aux | grep start.php确认主进程是否真在运行;如果进程存在但netstat -tuln | grep :你的端口无输出,说明监听IP确实没生效。
进入项目根目录,打开start.php或实际启动文件(常见如server.php),定位到$worker = new Worker('http://IP:端口');或$worker->listen('tcp://IP:端口');这一行。
修改监听IP为正确值
方法一:对外提供服务 → 改为0.0.0.0
将new Worker('http://127.0.0.1:8080')改为new Worker('http://0.0.0.0:8080');【必须确保防火墙已放行该端口,否则即使监听成功也无法访问】。
方法二:仅本地调试 → 保留127.0.0.1但验证调用来源
若确需限制为本机访问(例如配合Nginx反向代理),请确认所有请求都来自localhost或127.0.0.1;若前端域名直连该端口,127.0.0.1必然失败,此时不能只改代码,还要调整架构。
方法三:绑定特定网卡IP → 查清真实IP再填写
运行ip addr show或ifconfig,找到对应网卡(如eth0)下的IPv4地址(非127.0.0.1且非169.254.x.x),例如192.168.1.100或10.0.2.15;将其填入监听地址,如new Worker('tcp://192.168.1.100:5566');【填错网卡IP(比如填了docker0或lo的地址)会导致监听失败,务必核对输出中的inet字段】。
保存后重启Workerman服务
第一步:停止旧进程
执行php start.php stop;若提示No worker process running,说明进程已僵死,用kill -9 $(ps aux | grep 'start.php' | grep -v grep | awk '{print $2}')强制清理。
第二步:重新启动
运行php start.php start;注意观察终端输出——成功时会显示Workerman[xxx] start success及worker数量,失败则立即报错(如Address already in use或Cannot assign requested address)。
第三步:验证监听状态
执行netstat -tuln | grep :你的端口,应看到0.0.0.0:端口或你指定的IP+端口;再用curl http://本机IP:端口测试通路,返回预期内容即生效。

















