我在跟踪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版本。我不确定这是否重要,但我在路径中预先考虑了MAMPs版本,并重新运行了安装脚本。它似乎在/tmp/
中安装了Wordpress文件。运行phpunit
时出现相同的错误
发布于 2015-08-22 02:59:52
我终于让phpunit
跑起来了!
我在任何地方都找不到这个文档...
在安装过程中的某个时刻,Wordpress核心文件会安装在/tmp/wordpress/
中。该Wordpress安装有它自己的wp-config.php
文件,该文件的值不正确。当我更正这些值以匹配我的站点的wp-config.php
时,phpunit
可以正常工作!
我不确定这是如何发生的,但我的理论是,当我第一次使用错误的凭据运行安装脚本时。但后来我更正了它们(我重新运行了安装脚本几次)。但我认为安装脚本并没有覆盖原始文件。
+400到@Nikita Zernov,感谢你的帮助!
发布于 2015-08-21 03:17:30
如果您使用的是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引用
发布于 2015-08-17 19:39:50
通常情况下,如果您ftp或远程登录到本地主机,您将得到conection refused
,如果您想修复错误,请将您的httpd.conf
更改为ServerName localhost
另外,如果您想进行远程登录,请尝试通过转到System Preferences -> Sharing -> Remote Login box (check it)
来启用远程登录。
针对MySQL Problem的
确保在配置文件(在本例中为/opt/local/etc/mysql55/my.conf
)中注释掉‘skip-networking’,或者在启动mysql服务器时,它不会以‘-skip-networking’开头。
在跳过网络模式下,mysql实例根本不会“侦听TCP/IP连接”。所有与mysqld的交互都必须使用命名管道或共享内存(在Windows上)或Unix套接字文件(在Unix上)“from MySql Docs
我希望它能帮上忙。
https://stackoverflow.com/questions/31942696
复制相似问题