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

PHP网站移动端访问正常 桌面端报mysqli::real_connect()2002错误求排查

mysqli 2002 分UA连接错误排查步骤
  • 首先排查CodeIgniter框架的数据库配置逻辑:检查application/config/database.php以及所有自定义的数据库初始化代码,确认是否存在根据$_SERVER['HTTP_USER_AGENT']判断切换数据库连接参数的分支。该场景下最常见的原因是桌面端UA被匹配为走localhost的socket连接,移动端UA被匹配为走127.0.0.1的TCP连接,服务器MySQL的socket文件路径和PHP默认配置的路径不一致,就会触发No such file or directory报错。
  • 快速验证数据库主机配置:如果当前数据库配置的主机地址为localhost,直接修改为127.0.0.1测试。mysqli连接localhost时默认走socket协议,连接127.0.0.1时走TCP协议,修改后如果桌面端访问恢复正常,即可确认是socket路径不匹配导致的问题。
  • 排查socket路径配置:如果业务需要使用socket连接,先获取两个路径对比:一是PHP配置中mysqli.default_socket的参数值,二是MySQL服务实际使用的socket路径(可在my.cnf配置文件中查看socket参数,或执行ps aux | grep mysqld查看启动参数中的socket路径),两者不一致的话可以在CodeIgniter的数据库配置中新增socket参数指定正确路径,或者修改php.ini中mysqli.default_socket的配置值。
  • 排查反向代理/CDN分流规则:如果站点接入了CDN或反向代理服务,检查是否存在根据UA分流到不同后端节点的规则。桌面端UA被路由到的后端节点数据库配置错误、移动端UA路由到的节点配置正常,也会出现该现象。
  • 新增临时调试日志定位差异:可以在mysqli/mysqli_driver.php第203行之前临时加入调试日志,打印当前请求的User Agent、数据库连接使用的主机、端口、socket等参数值,对比桌面端和移动端请求的参数差异,可快速定位配置不一致的来源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 20:36:03