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
Barbara Streisandoriginal
2024-12-04 18:12:13618parcourir

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]);

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:
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