首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >wp-cli:无法在MAMP上运行phpunit

wp-cli:无法在MAMP上运行phpunit
EN

Stack Overflow用户
提问于 2015-08-11 21:07:58
回答 3查看 1.7K关注 0票数 17

我在跟踪plugin test setup/install instructions。我让wp scaffold plugin-tests my-plugin去跑了。但是在下一步,当我尝试运行bash bin/install-wp-tests.sh wordpress_test root '' localhost latest时,我得到了以下错误:

代码语言:javascript
复制
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的输出

代码语言:javascript
复制
$ ./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 ...这就是我无法连接的原因!但现在是了。我运行了安装脚本,这行得通...

代码语言:javascript
复制
$ ./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时,我得到的结果是:

代码语言:javascript
复制
$ 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.

代码语言:javascript
复制
$which phpunit
/usr/bin/phpunit

this gist中提到。

更新6

事实证明,您不能再使用pear安装phpunit。所以我把它作为一个作曲家依赖添加到了require-dev下,但是当我运行这个版本的时候,我得到了同样的错误!

代码语言:javascript
复制
$ ./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

我甚至将它添加到我的路径中以确保...

代码语言:javascript
复制
$ which phpunit
/Applications/MAMP/htdocs/pipeline/wp-content/plugins/wp-github-pipeline/vendor/phpunit/phpunit/phpunit

更新7

在阅读了this博客文章底部的评论后,我看到安装脚本引用的是mysqladmin的OSX版本。我不确定这是否重要,但我在路径中预先考虑了MAMPs版本,并重新运行了安装脚本。它似乎在/tmp/中安装了Wordpress文件。运行phpunit时出现相同的错误

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-22 02:59:52

我终于让phpunit跑起来了!

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

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

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

+400到@Nikita Zernov,感谢你的帮助!

票数 1
EN

Stack Overflow用户

发布于 2015-08-21 03:17:30

如果您使用的是MAMP,问题可能与您的MySQL服务器设置有关。确保选中MAMP设置中的Allow network access选项:

更新1

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

代码语言:javascript
复制
<?php phpinfo() ?>

然后检查Loaded Configuration File属性。在终端中使用nano或其他文本编辑器打开它。然后找到这3个属性pdo_mysql.default_socketmysql.default_socketmysqli.default_socket并将其更改为您的套接字文件。

http://maccrazy.com/lion-upgrade-killed-my-php-site-and-how-i-fixed-it引用

票数 4
EN

Stack Overflow用户

发布于 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

我希望它能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31942696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档