我很难理解为什么 PHP 无法localhost
作为主机连接。我可以通过执行以下操作来连接:
mysql -uroot -p
而且,通过 Sequel Pro 我可以作为主机连接本地主机。但使用 PHP,我得到:
Warning: mysqli_connect(): (HY000/2002): No such file or directory
我确信这是因为套接字的原因,因为如果我尝试更改为 127.0.0.1 它就可以工作。
为什么主机不工作?
答案1
PHP 正在尝试使用与 MySQL 正在侦听的套接字不同的套接字。
要查看 MySQL 正在侦听哪个套接字,请运行:
mysqld --verbose --help|grep ^socket
socket /var/run/mysqld/mysqld.sock
要查看 PHP 尝试使用什么套接字,您可以检查脚本的输出<?php phpinfo(); ?>
,它是可变的mysqli.default_socket
。您可以在文件中更改它php.ini
(通常在/etc/php5/apache2/
)。