Laravel 7升级至Laravel 8后本地API使用192.168.x.x地址请求出现ECONNREFUSED错误的解决办法咨询
解决Laravel API无法通过局域网IP访问的问题
嘿,我来帮你搞定这个问题!你遇到的Error: connect ECONNREFUSED本质是Laravel服务默认只绑定了本地回环地址(127.0.0.1),没监听局域网的网络接口,所以用192.168.x.x访问时连不上。下面是一步步的解决办法:
- 修改Laravel服务的监听地址
默认的php artisan serve只会响应本地回环的请求,你需要让它监听所有可用的网络接口,启动命令改成这样:
php artisan serve --host=0.0.0.0 --port=8000
这里的8000是默认端口,如果你用了其他端口,替换成自己的就行。启动后,就能用http://192.168.x.x:8000访问你的API了。
检查防火墙是否拦截了端口
如果上面的操作后还是不行,大概率是防火墙挡住了这个端口的入站请求:- Windows:打开Windows Defender防火墙,添加一条入站规则,允许目标端口(比如8000)的TCP连接。
- macOS:在系统设置的「网络」->「防火墙」里,允许终端(或你的Web服务进程)接收传入连接。
- Linux(Ubuntu/Debian):用ufw开放端口:
sudo ufw allow 8000/tcp sudo ufw reload - Linux(CentOS/RHEL):用firewalld开放端口:
sudo firewall-cmd --add-port=8000/tcp --permanent sudo firewall-cmd --reload
验证CORS配置(跨域请求场景)
如果你的请求是从其他前端项目发起的跨域请求,还要确保Laravel的CORS规则允许局域网IP的来源。打开config/cors.php:- 测试阶段可以把
allowed_origins设为['*'](生产环境要指定具体IP/域名),或者直接添加你的局域网IP前缀:'allowed_origins' => ['http://192.168.x.x:*'],
修改后重启Laravel服务让配置生效。
- 测试阶段可以把
检查端口是否被占用
有时候指定的端口可能被其他程序占用了,你可以用命令排查:# Windows netstat -ano | findstr :8000 # macOS/Linux lsof -i :8000
如果发现端口被占用,要么杀掉对应进程,要么换一个端口启动Laravel服务。
内容的提问来源于stack exchange,提问作者Ian Munge
相关产品推荐
相关产品推荐

