web-dev-qa-db-fra.com

WP-CLI ne peut pas se connecter à la base de données en raison de vagabond

J'utilise la version la plus récente de WP-CLI sur mon mac. Je fais tout le développement WordPress dans Vagrant, mais j'aimerais exécuter des commandes WP-CLI sur la machine hôte. J'ai un alias de domaine de "dev.mysite.com" sur l'IP de mon serveur afin qu'il soit accessible via mon navigateur Web via une requête HTTP.

Lorsque j'essaie d'exécuter une commande WP-CLI, le message d'erreur "Erreur lors de l'établissement de la connexion à une base de données" s'affiche car il tente de se connecter via "localhost" alors qu'il devrait s'agir de "dev.mystie.com" ou de l'adresse IP de la machine virtuelle vaginale. . Puis-je accéder à mon site via WP-CLI sans avoir à entrer SSH dans l'invité?

7
Zach Russell

Comme le problème est probablement lié à la configuration de la base de données, vous pouvez essayer de l'ajuster de manière conditionnelle dans wp-config.php:

if ( defined( 'WP_CLI' ) ) {
    define( 'DB_Host', 'example.com' );
}
else {
    define( 'DB_Host', 'localhost' );
}
5
Rarst

Avez-vous essayé de mettre à jour wp-config.php pour changer l'hôte de la base de données?

Sinon, pourquoi ne pas utiliser command + t dans le terminal pour ouvrir un nouvel onglet, puis vagabonder ssh dans celui-ci et l’utiliser pour WP-CLI?

3
sanchothefat

Vous pouvez jeter un oeil sur wp-cli-ssh

Exécuter de manière transparente les commandes WP-CLI sur un serveur distant via SSH

Je sais que vous ne voulez pas envoyer d'hôte SSH à l'invité, mais cela supprime, supposément, le besoin de le faire manuellement.

J'ai compris comment le configurer.

Suivez ces étapes

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/'

Créez ou éditez config.ymldans le même dossier et ajoutez:

require:
  - vendor/autoload.php

Installez le paquet avec: php composer.phar require x-team/wp-cli-ssh=dev-master

Ensuite, la simple exécution de wp devrait afficher une liste des sous-commandes disponibles et vous devriez ajouter ssh à cette liste.

Ensuite, nous configurons le plugin en wp-cli.local.yml ou 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/

Et lancez le tout avec wp ssh plugin status --Host=vagrant

... C'est juste dommage que ce plugin assume Varying-Vagrant-Vagrants. Étant donné que mon environnement vagabond héberge de nombreux sites, Vagrantfile n'est pas dans le répertoire WordPress, ce qui complique tout ...

2
Oskar

J'ai pu utiliser @aliases pour déclencher WP-CLI des commandes sur le basic-wordpress-vagrant box de mon ordinateur hôte. Peut-être que cela pourrait vous aider.

~/.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 liste de thèmes

1
jgraup