Un couple de distinctions qui n'ont pas abordé ici:
- Avec exec(), vous pouvez passer d'une option param variable qui va recevoir un tableau de lignes de sortie. Dans certains cas, cela pourrait économiser du temps, surtout si la sortie des commandes est déjà tabulaire.
Comparer:
exec('ls', $out);
var_dump($out);
// Look an array
$out = shell_exec('ls');
var_dump($out);
// Look -- a string with newlines in it
A l'inverse, si la sortie de la commande est de type xml ou json, puis d'avoir chaque ligne d'un tableau n'est pas ce que vous voulez, tant que vous aurez besoin de post-traitement à l'entrée dans une autre forme, donc dans ce cas utiliser shell_exec.
Il est également intéressant de souligner que shell_exec est un alias de la backtic opérateur, pour ceux qui sont utilisés pour *nix.
$out = `ls`;
var_dump($out);