WP-CLI kann aufgrund von Vagrant keine Verbindung zur Datenbank herstellen

7

Ich verwende die neueste Version von WP-CLI auf meinem Mac. Ich mache die gesamte WordPress-Entwicklung in Vagrant, möchte aber WP-CLI-Befehle auf dem Host-Computer ausführen. Ich habe einen Domain-Alias ​​von "dev.mysite.com" zur IP meines Servers, sodass über eine HTTP-Anfrage über meinen Webbrowser darauf zugegriffen werden kann.

Beim Versuch, einen WP-CLI-Befehl auszuführen, wird die Fehlermeldung "Fehler beim Herstellen einer Datenbankverbindung" angezeigt, da versucht wird, eine Verbindung über "localhost" herzustellen, wenn dies eigentlich "dev.mystie.com" oder die IP-Adresse der Vagrant-VM sein sollte . Gibt es eine Möglichkeit, über WP-CLI auf meine Website zuzugreifen, ohne SSH in den Gast eingeben zu müssen?

Zach Russell
quelle

Antworten:

5

Da es sich wahrscheinlich um eine DB-Konfiguration handelt, können Sie versuchen, sie unter folgenden Bedingungen anzupassen wp-config.php:

if ( defined( 'WP_CLI' ) ) {
    define( 'DB_HOST', 'example.com' );
}
else {
    define( 'DB_HOST', 'localhost' );
}
Selten
quelle
3

Haben Sie versucht, wp-config.php zu aktualisieren, um den Datenbankhost zu ändern?

Alternativ können Sie den Befehl + t im Terminal verwenden, um einen neuen Tab zu öffnen, und dann vagrant ssh dort hinein und diesen für WP-CLI verwenden.

Sanchothefat
quelle
2

Sie könnten einen Blick auf wp-cli-ssh werfen

Führen Sie WP-CLI-Befehle nahtlos über SSH auf einem Remote-Server aus

Ich weiß, dass Sie dem Gast keine SSH senden möchten, aber dies beseitigt zumindest angeblich die Notwendigkeit, dies manuell zu tun.

Ich fand heraus, wie ich es einrichten sollte.

Befolgen Sie diese Schritte

mkdir -p ~/.wp-cli
cd ~/.wp-cli
touch composer.json
php composer.phar init --stability dev --no-interaction
php composer.phar config bin-dir bin
php composer.phar config vendor-dir vendor
php composer.phar config repositories.wp-cli composer 'http://wp-cli.org/package-index/'

Erstellen oder bearbeiten Sie config.ymlim selben Ordner und fügen Sie Folgendes hinzu:

require:
  - vendor/autoload.php

Installieren Sie das Paket mit: php composer.phar require x-team/wp-cli-ssh=dev-master

wpWenn Sie dann nur ausführen, sollte eine Liste der verfügbaren Unterbefehle angezeigt werden, und Sie sollten sshdiese Liste hinzugefügt haben .

Dann konfigurieren wir das Plugin in wp-cli.local.ymloder wp-cli.yml:

ssh:
  vagrant:
    # The %pseudotty% placeholder gets replaced with -t or -T depending on whether you're piping output
    # The %cmd% placeholder is replaced with the originally-invoked WP-CLI command
    cmd: vagrant ssh-config > /tmp/vagrant_ssh_config && ssh -q %pseudotty% -F /tmp/vagrant_ssh_config default %cmd%
    # Passed to WP-CLI on the remote server via --url
    url: local-www.yourawesomewebsite.com
    # We cd to this path on the remote server before running WP-CLI
    path: /your/vvv/path/

Und alles laufen lassen mit wp ssh plugin status --host=vagrant

... Es ist nur schade, dass dieses Plugin Varying-Vagrant-Vagrants annimmt. Da meine Vagrant-Umgebung viele Websites hostet, befindet sich die Vagrant-Datei nicht im WordPress-Verzeichnis, was das Ganze kaputt macht ...

Oskar
quelle
1

Ich konnte @aliases verwenden , um WP-CLI- Befehle auf der basic-wordpress-vagrantBox von meinem Host-Computer aus auszulösen . Vielleicht könnte dir das helfen.

~ / .wp-cli / config.yml

@basic:
    ssh: basic.dev/var/www/wordpress/

~ / .ssh / config

Host basic.dev
    HostName basic.dev
    User vagrant
    IdentityFile ~/sites/basic.dev/.vagrant/machines/default/virtualbox/private_key

$ wp @basic Themenliste

jgraup
quelle