Maison > développement back-end > tutoriel php > Comment capturer et gérer la sortie StdErr après avoir utilisé exec() de PHP ?

Comment capturer et gérer la sortie StdErr après avoir utilisé exec() de PHP ?

Barbara Streisand
Libérer: 2024-12-04 18:12:13
original
631 Les gens l'ont consulté

How to Capture and Handle StdErr Output After Using PHP's exec()?

Comment accéder à StdErr après Exec() en PHP

En PHP, la fonction exec() exécute une commande et renvoie sa sortie sous la forme une chaîne. Toutefois, si la commande produit des erreurs, celles-ci sont généralement supprimées et non affichées. Pour gérer de telles erreurs, comprendre les flux stderr est crucial.

Utiliser proc_open pour lire StdErr

Pour accéder à stderr après avoir exécuté une commande, vous pouvez utiliser la fonction proc_open() , qui offre un contrôle granulaire sur le processus d'exécution. Il vous permet de définir des flux d'entrée/sortie pour stdin, stdout et stderr.

Voici un exemple :

$descriptorspec = [
   0 => ["pipe", "r"],  // stdin
   1 => ["pipe", "w"],  // stdout
   2 => ["pipe", "w"],  // stderr
];

$process = proc_open('./test.sh', $descriptorspec, $pipes, dirname(__FILE__), null);

$stdout = stream_get_contents($pipes[1]);
fclose($pipes[1]);

$stderr = stream_get_contents($pipes[2]);
fclose($pipes[2]);
Copier après la connexion

En lisant à partir du flux $pipes[2], vous pouvez accéder la sortie stderr produite par la commande exécutée.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal