web-dev-qa-db-fra.com

Sortie différente de WP-CLI en bash vs PHP exec ()

J'ai installé ce paquet sur WP-CLI. Lorsque je lance wp login create dans bash cela fonctionne correctement, mais lorsque j’exécute exec("wp login create") dans PHP script WP-CLI renvoie cette erreur:

Erreur: 'login' n'est pas une commande wp enregistrée. Voir 'aide wp' pour les commandes disponibles.

Voulez-vous dire 'plugin'?

J'ai vérifié l'utilisateur de exec("whoami") et c'est la même chose. Comment puis-je trouver le problème?

EDIT

quand je lance wp package list dans PHP, il retourne:

Erreur: le répertoire du compositeur '/.wp-cli/packages' pour les packages n'a pas pu être créé: mkdir (): autorisation refusée

1
Ali Sh

Selon Alain Schlesser in wordpress slack:

Le dossier dans lequel les packages sont installés est défini pour utiliser le dossier de base de l'utilisateur de votre serveur. Cependant, lorsque vous essayez d'exécuter cette commande à partir de PHP, elle est exécutée par l'utilisateur du serveur Web, qui a probablement un dossier personnel différent, et le paquet n'y est pas installé.

Vous pouvez charger le package manuellement en tant que partie du système (le nécessitant dans la pile Composer du site, par exemple) ou définir le dossier du package sur un emplacement partagé par votre utilisateur et votre serveur Web (puis le réinstaller par la suite).

Vous pouvez définir le dossier des packages avec la variable d’environnement WP_CLI_PACKAGES_DIR: https://make.wordpress.org/cli/handbook/config/#environment-variables

1
Ali Sh