Maison > développement back-end > tutoriel php > À propos de la façon d'utiliser exec, system et d'autres fonctions pour appeler des commandes système en PHP

À propos de la façon d'utiliser exec, system et d'autres fonctions pour appeler des commandes système en PHP

不言
Libérer: 2023-04-01 16:50:01
original
2210 Les gens l'ont consulté

Cet article présente principalement la méthode d'utilisation des fonctions exec, system et autres pour appeler des commandes système en PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

. PHP en tant que langage de script côté serveur, il est entièrement capable d'effectuer des tâches telles que l'écriture de pages Web dynamiques simples ou complexes. Mais les choses ne sont pas toujours ainsi. Parfois, pour mettre en œuvre une certaine fonction, vous devez recourir à des programmes (ou commandes) externes du système d'exploitation. De cette façon, vous pouvez obtenir deux fois le résultat avec la moitié de l'effort.

Les fonctions intégrées de PHP exec et system peuvent être utilisées. Appelez des commandes système (commandes shell), et bien sûr passthru, escapeshellcmd et d'autres fonctions.

Dans de nombreux cas, l'utilisation des fonctions exec, system et autres de PHP pour appeler des commandes système peut nous aider à terminer notre travail mieux et plus rapidement. Par exemple, exec m'a beaucoup aidé lorsque je traitais par lots des fichiers .rar il y a deux jours.

Aujourd'hui, je vais trier les fonctions du système d'appel couramment utilisées et partager mon expérience avec tout le monde.

Remarque : Si vous souhaitez utiliser ces deux fonctions, le mode sans échec dans php.ini doit être désactivé, sinon php ne vous permettra pas d'appeler des commandes système pour des raisons de sécurité.

Regardez d'abord l'explication de ces deux fonctions dans le manuel PHP :

exec --- Exécuter des programmes externes

Syntaxe : string exec ( string command [, array &output [, int &return_var]] )

 Explication :

 exec() exécute la commande donnée, mais elle ne produit rien, elle prend simplement la commande La dernière La ligne est renvoyée dans le résultat. Si vous devez exécuter une commande et obtenir toutes les données de la commande, vous pouvez utiliser la fonction passthru().

Si le tableau d'arguments est donné, le tableau spécifié sera rempli avec chaque ligne sortie par la commande Remarque : Si le tableau contient déjà certains éléments, exec() l'ajoutera au tableau plus tard, si. vous ne voulez pas que cette fonction ajoute des éléments, vous pouvez appeler unset() avant de passer le tableau à exec().

Si les paramètres array et return_var sont donnés, la commande status retournée à l'exécution sera écrite dans cette variable.

Remarque : Si vous autorisez la transmission des données provenant des entrées de l'utilisateur à cette fonction, vous devez alors utiliser escapeshellcmd() pour vous assurer que l'utilisateur ne peut pas tromper le système en lui faisant exécuter des commandes arbitraires.

Remarque : Si vous utilisez cette fonction pour démarrer un programme et que vous souhaitez le laisser s'exécuter en arrière-plan, vous devez vous assurer que la sortie du programme est redirigée vers un fichier ou un autre flux de données de sortie, sinon PHP se bloquera jusqu'à la fin de l'exécution du programme.

 system --- Exécuter des programmes externes et afficher la sortie

Syntaxe : string system ( string command [, int &return_var] )

Description :

system() exécute la commande donnée et affiche le résultat. Si le paramètre return_var est donné, le code d'état de la commande exécutée sera écrit dans cette variable.

Remarque : Si vous autorisez la transmission des données provenant des entrées de l'utilisateur à cette fonction, vous devez alors utiliser escapeshellcmd() pour vous assurer que l'utilisateur ne peut pas tromper le système en lui faisant exécuter des commandes arbitraires.

Remarque : Si vous utilisez cette fonction pour démarrer un programme et que vous souhaitez le laisser s'exécuter en arrière-plan, vous devez vous assurer que la sortie du programme est redirigée vers un fichier ou un autre flux de données de sortie, sinon PHP se bloquera jusqu'à la fin de l'exécution du programme.

Si PHP s'exécute en tant que module serveur, system() tentera d'effacer automatiquement le tampon de sortie du serveur Web après la sortie de chaque ligne.

Renvoie la dernière ligne de la commande en cas de succès, false en cas d'échec.

Si vous devez exécuter une commande et obtenir toutes les données de la commande, vous pouvez utiliser la fonction passthru().

Ces deux éléments sont utilisés pour appeler des commandes du shell système,

La différence :

exec peut renvoyer tous les résultats d'exécution à la fonction $output (array), $status est le statut d'exécution, 0 est le succès, 1 est l'échec

Systerm n'a pas besoin de fournir la fonction $output, il renvoie directement le résultat De même, $return_var est le code d'état de l'exécution, 0 est le succès, 1 est un échec

exemple d'exécution :

<?php 
$a = exec("dir",$out,$status); 
print_r($a); 
print_r($out); 
print_r($status); 
?>
Copier après la connexion

exemple de système :

<?php 
$a = system("dir",$out); 
print_r($a); 
print_r($out); 
?>
Copier après la connexion

system, exce, passthru différence
system() génère et renvoie la dernière ligne de résultats du shell.
exec() ne génère pas de résultats et renvoie la dernière ligne de résultats du shell. Tous les résultats peuvent être enregistrés dans un tableau renvoyé.
passthru() appelle uniquement la commande et affiche le résultat de l'exécution de la commande directement sur le périphérique de sortie standard tel quel.
Même point : vous pouvez obtenir le code d'état de l'exécution de la commande

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. Pour plus de contenu connexe, veuillez prêter attention à. le site PHP chinois !

Recommandations associées :

À propos de la méthode de preg_replace() en PHP pour remplacer régulièrement toutes les chaînes qualifiées

Analyse de la fonction filter_var() et de la fonction Filter en PHP

Analyse de la vulnérabilité de substitution str_replace en 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal