La différence entre system et exec en PHP est la suivante : le système exécute un programme externe et affiche le résultat, et il peut générer et renvoyer des résultats ; exec exécute un programme externe et ne génère pas de résultats mais renvoie la dernière ligne de le résultat.
Pour appeler des commandes externes en PHP, vous pouvez utiliser exec et system. Alors, quelles sont les différences entre eux ? Cet article vous présentera la différence entre système et exécutable en PHP.
1. exec ---Exécuter le programme externe
string exec ( string $command [, array &$output [, int &$return_var ]] )
$command : commande shell à exécuter
$output : la sortie de la commande shell remplit ce tableau et chaque ligne de sortie remplit un élément du tableau. Veuillez noter que si le tableau contient déjà certains éléments, la fonction exec() ajoutera le contenu à la fin du tableau. Si vous ne souhaitez pas ajouter à la fin du tableau, utilisez la fonction unset() pour réinitialiser le tableau avant de le transmettre à la fonction exec().
$return_var Statut de retour après l'exécution de la commande, La valeur de réussite de l'exécution de la commande est 0
Valeur de retour : la dernière ligne sortie par la commande shell
ps : 2>&1 exec échoue. Une astuce pour le débogage consiste à utiliser une commande de pipeline en utilisant 2>&1, la commande affichera l'erreur lors de l'exécution du shell. la variable $output , affiche cette variable à analyser.
Exemple 1
(1) Où le code se trouve La structure du fichier index.php
(2 ) Code
$out = [34]; $res = exec('ls 2>&1',$out,$return_status); var_dump($res); echo '------'; var_dump($out); echo '------'; var_dump($return_status);
(3) Résultat de l'exécution
zhangxueqing:demo playcrab$ php ./1/index.php /Users/playcrab/www/demo/1/index.php:10: string(11) "webuploader" ------/Users/playcrab/www/demo/1/index.php:12: array(10) { [0] => int(34) [1] => string(1) "1" [2] => string(6) "1.html" [3] => string(5) "1.php" [4] => string(10) "client.php" [5] => string(14) "design-pattern" [6] => string(3) "img" [7] => string(17) "jquery.blockUI.js" [8] => string(10) "static.php" [9] => string(11) "webuploader" } ------/Users/playcrab/www/demo/1/index.php:14: int(0)
2 système ---Exécuter le programme externe et afficher la sortie
string system ( string $command [, int &$return_var ] )
$command La commande à exécuter
$return_var L'état de retour après l'exécution de la commande, La valeur est 0 indiquant le succès
Résultat du retour :
renvoie 0 avec succès,
échoue (la commande n'existe pas, etc.) et renvoie une valeur non nulle
1. Exemple de code
$res = system('ls 2>&1',$return_status);var_dump($res);echo '------';var_dump($return_status);
2. Résultats de sortie
Résumé :
Fonction system() Tout comme dans d'autres langages, elle exécute la commande donnée, imprime et renvoie les résultats. Le deuxième paramètre est facultatif et est utilisé pour obtenir le code d'état après l'exécution de la commande.
La fonction exec() est similaire à system(). Elle exécute également la commande donnée, mais ne génère pas le résultat. , mais renvoie le résultat de la dernière ligne. Bien qu'il ne renvoie que la dernière ligne du résultat de la commande, l'utilisation du deuxième tableau de paramètres permet d'obtenir le résultat complet en ajoutant les résultats ligne par ligne à la fin du tableau. Donc si le tableau n'est pas vide, il est préférable d'utiliser unset() pour l'effacer avant de l'appeler. Ce n'est que lorsque le deuxième paramètre est spécifié que le troisième paramètre peut être utilisé pour obtenir le code d'état d'exécution de la commande.
Recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!