wp-cli: phpunit kann nicht auf MAMP ausgeführt werden

Lesezeit: 7 Minuten

Benutzeravatar von emersonthis
emersonthis

Ich verfolge die Plugin-Test-Setup/Installationsanweisungen. ich habe wp scaffold plugin-tests my-plugin laufen. Aber dann beim nächsten Schritt, wenn ich versuche zu laufen bash bin/install-wp-tests.sh wordpress_test root '' localhost latest Ich bekomme folgenden Fehler:

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'

Meine lokale WordPress-Site läuft mit MAMP (was funktioniert). Ich bin mir nicht sicher, ob das für das Installationsskript relevant ist, da ich denke, dass es eine temporäre DB zum Ausführen der Tests erstellt … Spielt es eine Rolle, ob es das integrierte OSX-Mysql oder MAMPs MySQL verwendet?

Hier ist die Ausgabe von 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

Aktualisierung 2
Ich habe herausgefunden, dass MySQL ursprünglich nicht installiert war … deshalb konnte ich keine Verbindung herstellen! Aber jetzt ist es so. Ich habe das Installationsskript ausgeführt, und das funktioniert …

$ ./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

Aber wenn ich laufe phpunit Ich bekomme das:

$ 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

Ein Teil meines Problems besteht darin, dass mir nicht klar ist, ob wp-cli vollständig auf nativem (cli) PHP/Mysql oder MAMPs PHP/Mysql oder einer Kombination aus beiden ausgeführt werden soll.

Aktualisierung 4
Ich bin mir ziemlich sicher, dass das letzte Problem darin besteht, dass phpunit in MAMP installiert werden muss, aber ich führe es von OSX aus …

$which phpunit
/usr/bin/phpunit

Erwähnt in dieses Wesentliche.

Aktualisierung 6

Es stellt sich heraus, dass Sie phpunit nicht mehr mit pear installieren können. Also habe ich es als Composer-Abhängigkeit unter require-dev hinzugefügt, aber wenn ich diese Version ausführe, erhalte ich den gleichen Fehler!

$ ./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

Ich habe es sogar zu meinem Pfad hinzugefügt, um sicherzugehen …

$ which phpunit
/Applications/MAMP/htdocs/pipeline/wp-content/plugins/wp-github-pipeline/vendor/phpunit/phpunit/phpunit

Aktualisierung 7

Nach dem Lesen der Kommentare am Ende von Dies Blog-Beitrag sehe ich, dass das Installationsskript auf die OSX-Version von verweist mysqladmin. Ich bin mir nicht sicher, ob das wichtig ist, aber ich habe die MAMPs-Version im Pfad vorangestellt und das Installationsskript erneut ausgeführt. Es scheint die WordPress-Dateien zu installieren /tmp/ ohnehin. Gleicher Fehler beim Ausführen phpunit

  • Standardmäßig, mamp führt mysql auf Port 8889 aus. Hast du es geändert? Was ist die Ausgabe von telnet localhost 3306 ?

    – Aserre

    11. August 2015 um 13:34 Uhr

  • @Ploutox Ich habe es geändert, sodass MAMP mysql auf dem Standardport ausführt. Ich habe die Ausgabe von hinzugefügt telnet zur obigen frage.

    – emersonthis

    11. August 2015 um 14:25 Uhr

  • Ja, es ist wichtig, welche mysql wird benutzt. Haben Sie versucht, MAMPs zu exportieren mysql und mysqladmin wie hier beschrieben? stackoverflow.com/a/29990624/2646526

    – heenenee

    16. August 2015 um 15:29 Uhr

  • Bitte überprüfen Sie, ob mysql über das Terminal läuft: ps aux | grep sql. Außerdem können Sie mit diesem Befehl prüfen, was auf welchem ​​Port läuft: lsof -i -P | grep -i "listen". Wenn mysql auf dem richtigen Port läuft, kommt Ihnen vielleicht eine Firewall in die Quere? Andere Option, können Sie eine Verbindung zu mysql herstellen, wenn Sie den Befehl ausführen mysql -uroot -p im Endgerät?

    – Jerik

    16. August 2015 um 20:03 Uhr


  • Könntest du gehen lokaler Host: 3306 und sehen, ob eine Datei mit dem Namen “download” heruntergeladen wird? Andernfalls läuft Ihr MySQL nicht auf diesem Port (oder läuft überhaupt nicht).

    – GuyT

    18. August 2015 um 11:15 Uhr

Benutzeravatar von Nikita Zernov
Nikita Zernov

Wenn Sie MAMP verwenden, kann das Problem für Ihre MySQL-Servereinstellungen relevant sein. Unbedingt prüfen Allow network access Option in den MAMP-Einstellungen:

Geben Sie hier die Bildbeschreibung ein

Aktualisierung 1

Schaffen phpinfo.php Datei in Ihrem Stammverzeichnis (normalerweise /Applications/MAMP/htdocs für MAMP). Fügen Sie den folgenden Inhalt ein:

<?php phpinfo() ?>

Überprüfen Sie dann die Loaded Configuration File Eigentum. Öffnen Sie es mit nano oder ein anderer Texteditor im Terminal. Dann suchen und ändern Sie diese 3 Eigenschaftenpdo_mysql.default_socket, mysql.default_socket, mysqli.default_socket zu Ihrer Socket-Datei.

Bezug genommen von http://maccrazy.com/lion-upgrade-killed-my-php-site-and-how-i-fixed-it

  • Kann das Radio auf “Nur von diesem Mac” eingestellt werden?

    – emersonthis

    20. August 2015 um 19:19 Uhr

  • Wenn Sie sich lokal mit MySQL verbinden müssen, wählen Sie only from this MacAndernfalls from other computers

    – Nikita Zernow

    20. August 2015 um 19:20 Uhr

  • Damit ich laufen kann wp db tables und es funktioniert. Aber wenn ich laufe phpunit Es wird der Bildschirm “Verbindung zur Datenbank kann nicht hergestellt werden” zurückgegeben …

    – emersonthis

    20. August 2015 um 19:24 Uhr

  • Funktioniert WordPress? Stellt es eine Verbindung zur MySQL-Datenbank her?

    – Nikita Zernow

    20. August 2015 um 19:27 Uhr

  • Ich glaube schon. Gerade hinzugefügt Aktualisierung 2 oben, die ausführlicher

    – emersonthis

    20. August 2015 um 19:28 Uhr


Ich habe endlich phpunit laufen!!

Ich konnte dies nicht dokumentiert finden irgendwo

Irgendwann während des Installationsvorgangs werden WordPress-Kerndateien installiert /tmp/wordpress/. Dass Die WordPress-Installation hat eine eigene wp-config.php Datei mit falschen Werten. Als ich diese Werte korrigierte, um sie anzupassen wp-config.php meiner Seite, phpunit hat ohne probleme geklappt!

Ich bin mir nicht sicher, wie das passiert ist, aber meine Theorie ist, dass ich das Installationsskript das erste Mal mit den falschen Anmeldeinformationen ausgeführt habe. Aber später habe ich sie korrigiert (ich habe das Installationsskript mehrmals erneut ausgeführt). Aber ich denke, das Installationsskript hat die Originaldateien nicht überschrieben.

+400 an @Nikita Zernov für so viel Hilfe!

Normalerweise erhalten Sie, wenn Sie FTP oder Telnet an localhost senden conection refusedwenn Sie den Fehler beheben möchten, ändern Sie Ihre httpd.conf zu ServerName localhost

Wenn Sie eine Remote-Anmeldung durchführen möchten, versuchen Sie auch, die Remote-Anmeldung zu aktivieren, indem Sie auf gehen
System Preferences -> Sharing -> Remote Login box (check it).

Für MySQL-Problem

Stellen Sie sicher, dass „Skip-Networking“ in der Konfigurationsdatei auskommentiert ist (in diesem Fall /opt/local/etc/mysql55/my.conf) oder beim Starten von mysql server startet er nicht mit ‘–skip-networking’

Im Skip-Networking-Modus „lauscht“ die mysql-Instanz „überhaupt nicht auf TCP/IP-Verbindungen. Jegliche Interaktion mit mysqld muss über Named Pipes oder Shared Memory (unter Windows) oder Unix-Socket-Dateien (unter Unix) erfolgen.“ aus MySql-Docs

Ich hoffe es hilft.

  • MAMP scheint eine eigene magische Version dieser Eigenschaft zu haben. In my.cnf sehe ich MAMP_skip-networking_MAMP. Meint ihr ich sollte das auskommentieren? Was ist Ihre Theorie?

    – emersonthis

    21. August 2015 um 12:46 Uhr

1402810cookie-checkwp-cli: phpunit kann nicht auf MAMP ausgeführt werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy