[RESOLU] system() ou exec() ?

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

22 mars 2017, 12:37

Bonjour,

J'ai du mal à bien saisir la différence précise entre ces deux fonctions.

Auriez-vous une explication simple et claire ?

Merci

ynx
Mammouth du PHP | 586 Messages

23 mars 2017, 18:17

Salut,

Les seules différences entre ces deux fonctions sembles être l'affichage du résultat et la valeur de retour :

- system() affiche directement le résultat de la commande sur la sortie standard (sous forme de texte contrairement à passthru) et retourne uniquement la dernière ligne du résultat de la commande
- exec() n'affiche rien et retourne uniquement la dernière ligne du résultat de la commande (on peut récupérer toutes les lignes du résultat en précisant le deuxième paramètre dans l'appel de la fonction exec)
- passthru() est similaire à la fonction system() mais retourne le résultat sous forme binaire

Les commentaires du code source de PHP semble confirmer ces différences (j'espère ne pas dire pas de bêtise) : https://github.com/php/php-src/blob/mas ... exec.c#L90

Bonne journée,

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

23 mars 2017, 22:59

Différences particulièrement subtiles.
Merci pour tes explications, bien plus claires que celles de php.net ;)