我跟随plugin test setup/install instructions。我让wp scaffold plugin-tests my-plugin
跑了。但是当我尝试运行bash bin/install-wp-tests.sh wordpress_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
在this gist中提及。
更新6
事实证明你不能再使用pear安装phpunit了。所以我在require-dev下将它添加为作曲家依赖,但是当我运行该版本时,我得到了同样的错误!
$ ./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
阅读this博客文章底部的评论后,我看到安装脚本引用了mysqladmin
的OSX版本。我不确定这是否重要,但我在路径中添加了MAMP版本,并重新运行安装脚本。似乎无论如何都要在/tmp/
中安装Wordpress文件。运行phpunit
答案 0 :(得分:3)
如果您使用的是MAMP,则问题可能与您的MySQL服务器设置有关。务必检查MAMP设置中的Allow network access
选项:
更新1
在根目录中创建phpinfo.php
文件(对于MAMP,通常为/Applications/MAMP/htdocs
)。粘贴以下内容:
<?php phpinfo() ?>
然后检查Loaded Configuration File
属性。使用终端中的nano
或其他文本编辑器打开它。然后查找并将此3个属性pdo_mysql.default_socket
,mysql.default_socket
,mysqli.default_socket
更改为套接字文件。
引自http://maccrazy.com/lion-upgrade-killed-my-php-site-and-how-i-fixed-it
答案 1 :(得分:1)
我终于让phpunit
跑了!!
我无法在任何地方找到 ...
在安装过程中的某个时刻,Wordpress核心文件安装在/tmp/wordpress/
中。 那个 Wordpress安装有自己的wp-config.php
文件,其值不正确。当我更正这些值以匹配我网站的wp-config.php
时,phpunit
没有问题!
我不确定这是怎么发生的,但我的理论是我第一次使用错误的凭据运行安装脚本。但后来我纠正了它们(我重新运行了几次安装脚本)。但我认为安装脚本没有覆盖原始文件。
+ @到@Nikita Zernov这么多的帮助!
答案 2 :(得分:0)
通常,如果您ftp或telnet到localhost,您将获得conection refused
,如果您想修复错误,请将httpd.conf
更改为ServerName localhost
此外,如果您想要进行远程登录,请尝试启用远程登录
System Preferences -> Sharing -> Remote Login box (check it)
。
对于MySQL问题
确保在配置文件中注释掉'skip-networking'(在本例中为/opt/local/etc/mysql55/my.conf
)或启动mysql服务器时,它不是以'-skip-networking'开头的
在跳过网络模式下,mysql实例根本不“侦听TCP / IP连接”。所有与mysqld的交互必须使用命名管道或共享内存(在Windows上)或Unix套接字文件(在Unix上)“from MySql Docs
我希望它有所帮助。