警告:mysqli_real_connect():( HY000/2002):第1452行/private/tmp/wordpress/wp-includes/wp-db.php中没有此类文件或目录

Som*_*Guy 5 php mysql wordpress mysqli mysql-connect

我正在尝试运行PHPUnit来对WordPress插件进行单元测试,但标题中的错误仍然显示出来.

我使用WP-CLI来设置单元测试,但是当我尝试运行它时,WP-CLI也会抛出类似的错误.

我使用MAMP来运行数据库.

我将WP-CLI和PHPUnit设置为phars,在〜/ .bash-profile中设置别名,并使用OS X提供的默认"php"运行.更改此项,并使用最新的PHP版本运行WP-CLI和PHPUnit由MAMP提供的固定WP-CLI(它正在运行并连接到数据库就好了)但PHPUnit仍然抛出相同的错误.

我已经尝试编辑wp-config.php文件,并将主机设置为":/ path/to/mamp/mysql.socket","localhost:/path/to/mamp/mysql.socket"和"127.0.0.1" ",没有一个帮助.

我完全陷入困境,不知道下一步该尝试什么.

Dou*_*son 16

我刚刚遇到这个错误 - 你检查过你wp-config.php指定的架构吗?

在我的情况下,我完全忘记创建它,所以修复就像一个简单CREATE DATABASE wordpress.

wp-config.php数据库主机出错时,我也遇到了这个错误(尝试交换localhost127.0.0.1).

  • 将localhost更改为127.0.0.1为我做了,谢谢你! (4认同)

Nil*_*lpo 8

首先,确保MySql实际上正在运行.如果进程尚未启动,则不会创建套接字文件.

netstat -tulpn | grep mysql
Run Code Online (Sandbox Code Playgroud)

要么

ps -e | grep mysql
Run Code Online (Sandbox Code Playgroud)

如果MySql正在运行,那么将数据库主机更改localhost127.0.0.1wp-config.php,但这只是一种解决方法.

当您指定时localhost,该mysqli_real_connect()函数尝试通过无法找到的Unix套接字连接到您的数据库(因此"无此类文件"错误.)当您指定时127.0.0.1,它会尝试使用默认TCP端口连接到您的数据库(通常为3306) )哪个有效.

这并不能解决PHP不知道在哪里找到MySql套接字的问题.您需要在您的配置中配置以下选项php.ini.套接字的位置将根据您的操作系统而有所不同,但您通常可以通过运行找到它locate mysql.sock.这是在CentOS 6.8上适合我的设置.

php.ini中

pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
mysqli.default_socket = /var/lib/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)

其他系统通常使用/tmp/mysqld.sock.您可以通过检查MySql配置文件来验证配置的位置my.cfg.

一旦您将PHP配置为指向正确的套接字位置,请重新启动Apache/nginx以便它获取新设置.

现在您可以localhost按预期使用.