18

我正在遵循插件测试设置/安装说明。我得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

在这个要点中提到。

更新 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

在阅读了这篇博文底部的评论后,我看到安装脚本引用了 OSX 版本的mysqladmin. 我不确定这是否重要,但我在路径中添加了 MAMP 版本,并重新运行了安装脚本。/tmp/无论如何,它似乎都安装了 Wordpress 文件。我运行时出现同样的错误phpunit

4

3 回答 3

4

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

在此处输入图像描述

更新 1

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

<?php phpinfo() ?>

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

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

于 2015-08-20T19:17:29.700 回答
1

我终于phpunit要跑了!!

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

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

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

+400 给@Nikita Zernov 以获得如此多的帮助!

于 2015-08-21T18:59:51.943 回答
0

通常如果你 ftp 或 telnet 到 localhost 你会得到conection refused,如果你想修复错误改变httpd.confServerName localhost

此外,如果您想进行远程登录,请尝试通过转到启用远程登录 System Preferences -> Sharing -> Remote Login box (check it)

对于 MySQL 问题

确保在配置文件中注释掉'skip-networking'(在这种情况下/opt/local/etc/mysql55/my.conf)或在启动mysql服务器时,它不以'--skip-networking'开头</p>

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

我希望它有所帮助。

于 2015-08-17T11:39:50.350 回答