wordpress wp-union:无法在MAMP上运行phpunit

3okqufwl  于 12个月前  发布在  WordPress
关注(0)|答案(3)|浏览(132)

我正在跟踪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(它正在工作)。我不确定这是否与安装脚本相关,因为我认为它正在创建一个临时DB来运行测试.如果它使用内置的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-PHP是否应该完全运行在原生(原生)PHP/Mysql上,或者MAMP的PHP/Mysql上,或者两者的某种组合。

更新4我很确定最后一个问题是phpunit需要安装在MAMP中,但我正在从OSX运行它。

$which phpunit
/usr/bin/phpunit


this gist中提到。

更新6

结果你不能再用pear安装phpunit了,所以我把它作为composer依赖添加到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时也会出现同样的错误

p1tboqfb

p1tboqfb1#

通常,如果您通过ftp或telnet连接到localhost,您将获得conection refused,如果您想修复错误,请将httpd.conf更改为ServerName localhost
另外,如果你想进行远程登录,请尝试通过转到System Preferences -> Sharing -> Remote Login box (check it)来启用远程登录。

MySQL问题

确保在配置文件(在本例中为/opt/local/etc/mysql55/my.conf)中注解掉“skip-networking”,或者在启动mysql服务器时,它不以“-skip-networking”开头
在skip-networking模式下,mysql示例根本不侦听TCP/IP连接。与mysqld的所有交互都必须使用命名管道或共享内存(在Windows上)或Unix套接字文件(在Unix上)”from MySql Docs

xxe27gdn

xxe27gdn2#

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


的数据

更新1

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

<?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

ve7v8dk2

ve7v8dk23#

我终于得到了phpunit运行!!
我在任何地方都找不到这个记录……
在安装过程中的某个时候,WordPress的核心文件安装在/tmp/wordpress/中。* 那个 * WordPress安装有它自己的wp-config.php文件,该文件的值不正确。当我纠正这些值以匹配我网站的wp-config.php时,phpunit工作没有问题!
我不知道这是怎么发生的,但我的理论是,我第一次运行安装脚本时使用了错误的凭据。但后来我纠正了它们(我重新运行了几次安装脚本)。但我认为安装脚本没有覆盖原始文件。
+400给@Nikita Zernov这么多帮助!

相关问题