您的位置:首页 > 编程语言 > PHP开发

无法为 php_mysqli 指定 mysqli.default_socket 参数

2015-12-03 16:06 465 查看
mysqli_connect(): (HY000/2002): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

先给出结论

此bug尚未找出解决方案,但我已使用了曲线救国的方案来救命

背景

用了阿里云市场中提供的镜像;

localhost
host
的话,php连接mysql时就会走
socket
的方式而非
TCP/IP
的方式。

镜像中提供的可视化运维系统(PHP),似乎指定了mysql socket的路径为:
/tmp/mysql.sock
;因此,若我改
mysql
的配置
socket
的话,则该可视化运维系统不可用;

该可视化运维系统使用了
zend
的工具进行加密,无法修改;

调试过程

因此只能改自己
PHP
的配置
mysqli.default_socket


备注:经测试,用
php_mysql
扩展的话,
mysql.default_socket
修改成功,并能成功连接。

而修改
mysqli.default_socket
的话,依然报上述的错,也就是设置无效。

利用
php_info
查看了一下mysqli的配置,结果如下:

MYSQLI_SOCKET   /tmp/mysql.sock
mysqli.default_socket   no value


这里可以看出俩问题:

- 似乎设置好了
MYSQLI_SOCKET
,但为何未能设置成功
mysqli.default_socket


- google了一下,别人都是说
MYSQLI_SOCKET
会覆盖
mysqli.default_socket
,因此需要处理
MYSQLI_SOCKET
不正确的问题;那在我这,为何
MYSQLI_SOCKET
没有覆盖
mysqli.default_socket


最终结果

搞不定此socket的配置,只好换回用
127.0.0.1
来走
TCP/IP


备注:用
127.0.0.1
的话,记得在mysql的配置文件
my.cnf
中把
skip-name-resolve
给注释掉,否则会报以下这错:

Host ‘127.0.0.1’ is not allowed to connect to this MySQL server
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: