Maison  >  Article  >  développement back-end  >  Que dois-je faire si system() en php ne renvoie pas de sortie ?

Que dois-je faire si system() en php ne renvoie pas de sortie ?

王林
王林original
2021-09-27 14:41:232451parcourir

Solution au problème selon lequel system() en php ne renvoie pas de sortie : redirigez l'erreur standard vers la sortie standard en ajoutant [2 >& 1] à la commande, par exemple [exec('some_command --option 2> & 1', $output, $ret);].

Que dois-je faire si system() en php ne renvoie pas de sortie ?

L'environnement d'exploitation de cet article : système windows10, php 7, ordinateur thinkpad t480.

Récemment, alors que je travaillais, j'ai découvert accidentellement que l'exécution de commandes courantes comme 'ls', exec() peut fonctionner correctement, par exemple :

 exec('ls',$输出,$ retval); 
 var_dump($ output,$ retval); 
 // $ output包含文件名数组,retval === 0

Mais lorsque j'essaie d'exécuter un autre programme, je ne parviens pas à obtenir le résultat , comme suit :

exec('some_command --a_parameter',$ output ,$ retval); 
 var_dump($ output,$ retval); 
 // $ output包含一个空数组,结束$ retval === 0

Lors de l'exécution de la commande directement depuis la ligne de commande, certaines lignes seront imprimées. Je sais que l'exécution de la commande a réussi et je peux voir les résultats (quelques mises à jour de fichiers, ajout de données, etc.), mais Je ne peux pas voir le résultat.

La fonction exec() ne capturera que la sortie standard. Je ne suis pas sûr que l'erreur standard soit toujours envoyée au journal des erreurs Apache, mais cela semble possible.

Si vous n'avez pas besoin d'utiliser un système Unix, nous pouvons en fait rediriger l'erreur standard vers la sortie standard en ajoutant 2>& 1 à la commande, afin que le problème puisse être résolu, par exemple :

 exec('some_command --option 2>& 1',$ output,$ ret);

Recommandé apprentissage : Formation 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!

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