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
。你认为我应该把这个评论出来吗?你的理论是什么?