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数据库主机出错时,我也遇到了这个错误(尝试交换localhost和127.0.0.1).
首先,确保MySql实际上正在运行.如果进程尚未启动,则不会创建套接字文件.
netstat -tulpn | grep mysql
Run Code Online (Sandbox Code Playgroud)
要么
ps -e | grep mysql
Run Code Online (Sandbox Code Playgroud)
如果MySql正在运行,那么将数据库主机更改localhost为127.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按预期使用.