如何在mysqli_connect使用localhost时强制采用TCP连接?
可以通过配置实现,以下是几种可靠方案:
1. 强制PHP mysqli使用TCP协议(php.ini)
编辑你的php.ini文件,添加或修改以下配置项:
mysqli.default_protocol = "tcp"
保存后重启PHP服务(如PHP-FPM、Apache等)。这个配置会让mysqli扩展默认使用TCP协议连接,即使传入的主机名是localhost,也会自动通过127.0.0.1的3306端口建立TCP连接。
2. 修改MySQL客户端全局配置
在MySQL的客户端配置文件中(Linux/macOS路径通常为~/.my.cnf或/etc/my.cnf,Windows为my.ini),在[client]区块添加:
[client] protocol=tcp
该配置会强制所有MySQL客户端(包括PHP的mysqli)使用TCP协议,无论连接时指定的主机名是localhost还是其他地址。
3. 清空PHP mysqli默认套接字路径(php.ini)
如果你的系统中mysqli默认优先使用Unix套接字,可通过清空默认套接字路径来强制TCP连接:
编辑php.ini,设置:
mysqli.default_socket = ""
当没有指定套接字路径时,mysqli会自动 fallback 到TCP连接127.0.0.1,这样使用localhost作为主机名时就会走TCP而非套接字。
内容的提问来源于stack exchange,提问作者Darko Miletic
相关产品推荐
相关产品推荐

