Bash wp cli:无法在MAMP上运行phpunit

Bash wp cli:无法在MAMP上运行phpunit,bash,wordpress,mamp,wp-cli,Bash,Wordpress,Mamp,Wp Cli,我在跟踪调查。我让wp scaffold插件测试我的插件运行。但是在下一步,当我尝试运行bash-bin/install-wp-tests.sh wordpress\u test root''localhost-latest时,我得到以下错误: mysqladmin: connect to server at 'localhost' failed error: 'Can't connect to MySQL server on 'localhost' (61)' Check that mysql

我在跟踪调查。我让
wp scaffold插件测试我的插件运行。但是在下一步,当我尝试运行
bash-bin/install-wp-tests.sh wordpress\u test root''localhost-latest
时,我得到以下错误:

mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to MySQL server on 'localhost' (61)'
Check that mysqld is running on localhost and that the port is 3306.
You can check this by doing 'telnet localhost 3306'
我的本地Wordpress站点正在运行MAMP(正在运行)。我不确定这是否与安装脚本相关,因为我认为它正在创建一个临时数据库来运行测试。。。它使用内置的OSX mysql还是MAMP的mysql重要吗

下面是来自
wp--info

$ ./vendor/wp-cli/wp-cli/bin/wp --info
PHP binary: /Applications/MAMP/bin/php/php5.6.10/bin/php
PHP version:    5.6.10
php.ini used:   /Applications/MAMP/bin/php/php5.6.10/conf/php.ini
WP-CLI root dir:    /Applications/MAMP/htdocs/pipeline/wp-content/plugins/wp-github-pipeline/vendor/wp-cli/wp-cli
WP-CLI global config:   
WP-CLI project config:  
WP-CLI version: 0.19.2
更新2 我发现最初没有安装MySQL。。。这就是我无法连接的原因!但现在是这样。我运行了安装脚本,这很有效

$ ./vendor/wp-cli/wp-cli/bin/wp db tables
wp_users
wp_usermeta
wp_posts
wp_comments
wp_links
wp_options
wp_postmeta
wp_terms
wp_term_taxonomy
wp_term_relationships
wp_commentmeta
但是当我运行
phpunit
时,我得到了以下结果:

$ phpunit
PHP Warning:  mysqli_real_connect(): (HY000/2002): No such file or directory in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
PHP Stack trace:
PHP   1. {main}() /private/tmp/wordpress-tests-lib/includes/install.php:0
PHP   2. require_once() /private/tmp/wordpress-tests-lib/includes/install.php:21
PHP   3. require_wp_db() /private/tmp/wordpress/wp-settings.php:79
PHP   4. wpdb->__construct() /private/tmp/wordpress/wp-includes/load.php:350
PHP   5. wpdb->db_connect() /private/tmp/wordpress/wp-includes/wp-db.php:649
PHP   6. mysqli_real_connect() /private/tmp/wordpress/wp-includes/wp-db.php:1452

Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
我的部分问题是,我不清楚wp-cli是否应该完全在本机(cli)PHP/Mysql上运行,还是应该在MAMP的PHP/Mysql上运行,或者两者的某种组合上运行

更新4 我很确定最后一个问题是phpunit需要安装在MAMP中,但我正在OSX上运行它

$which phpunit
/usr/bin/phpunit
在中提到

更新6

事实证明,您不能再使用pear安装phpunit。所以我在requiredev下添加了它作为一个composer依赖项,但是当我运行这个版本时,我得到了相同的错误

$ ./vendor/phpunit/phpunit/phpunit
PHP Warning:  mysqli_real_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: NO) in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
PHP Stack trace:
PHP   1. {main}() /private/tmp/wordpress-tests-lib/includes/install.php:0
PHP   2. require_once() /private/tmp/wordpress-tests-lib/includes/install.php:21
PHP   3. require_wp_db() /private/tmp/wordpress/wp-settings.php:79
PHP   4. wpdb->__construct() /private/tmp/wordpress/wp-includes/load.php:350
PHP   5. wpdb->db_connect() /private/tmp/wordpress/wp-includes/wp-db.php:649
PHP   6. mysqli_real_connect() /private/tmp/wordpress/wp-includes/wp-db.php:1452

Warning: mysqli_real_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: NO) in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
我甚至将它添加到我的路径中以确保

$ which phpunit
/Applications/MAMP/htdocs/pipeline/wp-content/plugins/wp-github-pipeline/vendor/phpunit/phpunit/phpunit
更新7


在阅读了博客文章底部的评论之后,我看到安装脚本引用了OSX版本的
mysqladmin
。我不确定这是否重要,但我在路径中预先添加了MAMPs版本,并重新运行了安装脚本。它似乎无论如何都要在
/tmp/
中安装Wordpress文件。当我运行
phpunit

时也会出现同样的错误。通常,如果您将ftp或telnet发送到本地主机,您将得到
连接被拒绝的消息,如果您想修复此错误,请将
httpd.conf
更改为
ServerName localhost

另外,如果要进行远程登录,请尝试通过转到启用远程登录
系统首选项->共享->远程登录框(选中)

针对MySQL问题

确保“跳过网络”在配置文件中被注释掉(在本例中为
/opt/local/etc/mysql55/my.conf
),或者在启动mysql服务器时,它不会以“–跳过网络”开头

在跳过网络模式下,mysql实例“根本不侦听TCP/IP连接。与mysqld的所有交互必须使用命名管道或共享内存(在Windows上)或Unix套接字文件(在Unix上)”


我希望它能有所帮助。

如果您使用的是MAMP,这个问题可能与您的MySQL服务器设置有关。确保选中MAMP设置中的
允许网络访问
选项:

更新1

在根目录中创建
phpinfo.php
文件(对于MAMP,通常是
/Applications/MAMP/htdocs
)。粘贴以下内容:

<?php phpinfo() ?>

然后检查
加载的配置文件
属性。使用
nano
或终端中的其他文本编辑器打开它。然后查找并将这3个属性
pdo_-mysql.default_-socket
mysql.default_-socket
mysqli.default_-socket
更改为套接字文件


引用自

我终于运行了
phpunit

我在任何地方都找不到这个文件

在安装过程中的某个时刻,Wordpress核心文件安装在
/tmp/Wordpress/
中。Wordpress安装有自己的
wp config.php
文件,该文件的值不正确。当我更正这些值以匹配我的站点的
wp config.php
时,
phpunit
工作正常

我不确定这是怎么发生的,但我的理论是,我第一次使用错误的凭据运行安装脚本。但后来我纠正了它们(我多次重新运行安装脚本)。但是我认为安装脚本没有覆盖原始文件


+400给@Nikita Zernov,谢谢你的帮助

默认情况下。你换了吗?telnet localhost 3306的输出是什么?@plootox我确实更改了它,以便MAMP在标准端口上运行mysql。我在上面的问题中添加了
telnet
的输出。是的,使用哪个
mysql
很重要。您是否尝试按此处所述导出MAMP的
mysql
mysqladmin
?请检查mysql是否通过终端运行:
ps aux | grep sql
。此外,使用此命令,您可以检查在哪个端口上运行的内容:
lsof-i-P | grep-i“listen”
。如果mysql在正确的端口上运行,您是否有防火墙会妨碍您?Ohter option,如果您在终端中运行命令
mysql-uroot-p
,您可以连接到mysql吗?您可以转到并查看是否下载了名为“下载”的文件吗?否则,您的mysql没有在该端口上运行(或者根本没有运行)。是否可以将收音机设置为“仅从此Mac连接”?如果您需要能够在本地连接到mysql,请选择“仅从此Mac连接”
,否则,请从其他计算机上选择“仅从该Mac连接”
,这样我就可以运行
wp db tables
,并且它可以工作。但是当我运行
phpunit
时,它返回“无法连接到数据库”屏幕…Wordpress工作吗?它连接到MySQL数据库吗?我想是的。刚刚添加了上面的更新2,它似乎有自己的神奇版本的属性。在my.cnf中,我看到
MAMP\u skip-networking\u MAMP
。你认为我应该把这个评论出来吗?你的理论是什么?