You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10使用Soketi广播事件失败:cURL无法解析主机

解决Laravel + Soketi广播的cURL错误6(无法解析主机)

问题核心

当前错误为cURL错误6:无法解析主机app.myapp.com,说明Laravel广播进程(通过Horizon)尝试向Soketi服务发送请求时,服务器无法将域名app.myapp.com解析为对应IP地址。

排查与解决步骤

1. 验证服务器本地域名解析能力

在服务器终端执行以下命令,测试域名是否能正常解析:

ping app.myapp.com
# 或者用更精准的解析测试
nslookup app.myapp.com
  • 若返回"无法解析主机":
    • 若app.myapp.com是自定义本地域名,直接在服务器/etc/hosts文件添加IP映射:
      sudo nano /etc/hosts
      # 添加一行(Soketi本地运行填127.0.0.1,远程服务器填对应公网/内网IP)
      127.0.0.1 app.myapp.com
      
    • 若为公网域名,刷新服务器DNS缓存:
      sudo systemd-resolve --flush-caches
      
      等待数分钟后再次测试,若仍失败,检查域名DNS记录是否正确生效。

2. 调整Laravel广播配置,绕过DNS解析

如果Soketi与Laravel部署在同一服务器,直接在.env文件中使用IP而非域名,规避DNS解析问题:

# 替换原PUSHER_HOST为本地IP或127.0.0.1
PUSHER_HOST=127.0.0.1
PUSHER_PORT=6001
PUSHER_APP_ID=my-ws
PUSHER_APP_KEY=my-websocket
PUSHER_APP_SECRET=你的Soketi密钥
# 确保广播驱动为pusher
BROADCAST_DRIVER=pusher

修改后重启Horizon与Laravel应用:

php artisan horizon:restart
php artisan queue:restart

3. 确认Soketi服务可访问性

在服务器本地直接测试Soketi的API接口,验证服务是否正常运行:

# 若Soketi用HTTPS
curl https://127.0.0.1:6001/apps/my-ws/events -I
# 若用HTTP则替换为http://

返回200系列状态码说明服务正常;若连接失败,检查Soketi的pm2进程是否运行、端口是否被占用。

4. 检查Horizon环境变量加载

确保Horizon运行时加载的是正确的.env配置文件,避免配置不一致。可通过Horizon面板查看当前环境变量,或重启时指定环境:

php artisan horizon:restart --env=production

内容的提问来源于stack exchange,提问作者Saiful Alam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:14:57