Maison >développement back-end >tutoriel php >Comment puis-je capturer la sortie d'erreur standard de « exec() » en PHP ?
Récupérer le flux d'erreurs standard après Exec() en PHP
Problème :
Vous' vous exécutez une commande à l'aide de la fonction exec() de PHP et souhaitez capturer les messages d'erreur potentiels écrits dans l'erreur standard stream.
Solution :
PHP fournit une approche plus complète pour contrôler et capturer à la fois la sortie standard et les flux d'erreurs à l'aide de proc_open.
Comment utiliser :
$descriptorspec = [ 0 => ["pipe", "r"], // stdin 1 => ["pipe", "w"], // stdout 2 => ["pipe", "w"], // stderr ];
$process = proc_open($command, $descriptorspec, $pipes, dirname(__FILE__), null);
$stderr = stream_get_contents($pipes[2]);
Exemple :
Considérez le script test.sh suivant :
#!/bin/bash echo 'this is on stdout'; echo 'this is on stdout too'; echo 'this is on stderr' >&2; echo 'this is on stderr too' >&2;
Dans un script PHP, nous pouvons exécuter test.sh et capturer stdout et stderr :
$descriptorspec = [0 => ["pipe", "r"], 1 => ["pipe", "w"], 2 => ["pipe", "w"]]; $process = proc_open('./test.sh', $descriptorspec, $pipes); $stdout = stream_get_contents($pipes[1]); $stderr = stream_get_contents($pipes[2]); echo "stdout: $stdout"; echo "stderr: $stderr";
Sortie :
stdout: this is on stdout this is on stdout too stderr: this is on stderr this is on stderr too
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!