Quelles sont les différences de système(), exec() et shell_exec() en PHP?
Il est possible d'exécuter une commande externe par trois fonctions PHP de
system();
exec();
shell_exec();
mais quelles sont leurs différences? En dépit de leurs applications spécifiques, dans la plupart des cas, elles peuvent être également utilisées. Je suis curieux de savoir qui est privilégiée lorsqu'ils peuvent également être utilisés. Par exemple, pour la décompression d'un fichier ou la compression d'un dossier (avec la commande tar), qui est préférée (probablement du point de vue des performances)?
Mise à JOUR: Dans une autre question, j'ai trouvé un très utile lien décrivant les différents aspects de ces fonctions. J'ai partager le lien ici, comme d'autres peuvent utiliser pour mieux comprendre les questions de sécurité et d'autres aspects.
- De ne pas être snippy, mais ce qu'a fait le manuel de dire sur les fonctions respectives?
- Aussi, vous avez oublié passthru () 🙂
- J'ai lu le manuel, mais je ne comprends pas la préférence pour chaque fonction. Pour de nombreux cas, ils peuvent également être utilisés. Je veux un point de vue pratique.
- Double Possible de stackoverflow.com/questions/732832/...
- vous avez raison, cette question traite de la même question, mais j'ai été incapable de le trouver. Une réponse a un lien utile pour les explications détaillées. Merci!
- Double Possible de PHP exec() et system() vs passthru() et php shell_exec() et exec()
Vous devez vous connecter pour publier un commentaire.
exec — Exécuter un programme externe
système — Exécuter un programme externe et affiche la sortie
shell_exec — Exécution de la commande par le shell et le retour de la production complète en tant que chaîne
donc, si vous n'avez pas besoin de la sortie, je voudrais aller avec exec.
Plus de détails:
exec()
retourne la dernière ligne de sortie, donc si vous êtes d'appeler un programme simple qui produit juste une seule valeur commewhoami
oupwd
,exec()
est parfait.