Je cherche un moyen de tester certaines WP-CLI mais à partir de la console de barre de débogage où je teste normalement PHP. Pour les cas où je ne veux pas passer de Windows à SSH, cela pourrait être un moyen de réutiliser/développer effective CLI Méthodes en dehors de CLI.
J'ai vu exec mais il ne me montre que ce qui semble être la dernière ligne de la commande.
echo exec('ls -la'); // -rw-rw-r-- 1 www-data www-data 18108 Jan 20 21:57 widgets.php
Quelqu'un a-t-il déjà essayé d'assembler un ensemble plus complexe de commandes d'une manière plus lisible par l'homme?
Il semble que exec()
puisse toujours fonctionner avec les bonnes variables.
$last_line = exec( $command, &$output, &$return_var )
Le second paramètre capture toutes les données de retour tandis que le retour de la fonction capture la dernière ligne.
string exec( string $command, array &$output, int &$return_var )
est utilisé pour appeler une commande système et éventuellement gérer la sortie vous-même.string Shell_exec( string $cmd )
Exécutez la commande via Shell et renvoyez la sortie complète sous forme de chaîne.string system( string $command, int &$return_var )
sert à exécuter une commande système et à afficher immédiatement le résultat - probablement du texte.passthru( string $command, int &$return_var )
sert à exécuter une commande système dont vous souhaitez obtenir le retour brut - vraisemblablement quelque chose de binaire.$commands = array(
'wp --version',
'whoami',
'pwd',
'ls -la',
'wp theme list',
'wp plugin list',
);
echo '<pre>'.PHP_EOL;
foreach ($commands as $command ) {
// run command
exec($command, $retval);
// convert output array to text
echo implode(PHP_EOL, $retval) . PHP_EOL;
// clear the var for the next command
unset($retval);
}
echo '</pre>';
WP-CLI n'est pas différent des autres utilitaires côté serveur en ce que vous devez être en mesure d'obtenir l'autorisation de les exécuter à partir d'un environnement de serveur Web à l'aide de exec
, spawn
ou d'amis. Pour des raisons évidentes, tous ces types d'API PHP vont être bloqués sur la plupart des serveurs. Il est donc peu probable qu'un serveur que vous ne gérez pas (l'accès sans SSH soit une indication) vous laisse exécuter CLI en wordpress.