2011-11-23 1 views
0

Possible en double:
How can I know the error in command in an exec function?En utilisant la fonction exec() de PHP (ou les goûts), comment pouvez-vous afficher la sortie d'erreur du terminal?

Je me demande s'il y a un moyen (en PHP) pour produire les informations d'erreur de compilation du terminal vers le navigateur?

Par exemple: Si vous utilisez ce code à exécuter dans le terminal ...

gcc -o try try.c

... et en supposant que les erreurs ont des "try.c". Le terminal de sortie quelque chose comme ceci:

  • try.c En fonction 'principale':
  • try.c: 27 'x' non déclaré (première utilisation dans cette fonction)
  • try.c: 27 (chaque identificateur non déclaré est rapporté qu'une seule fois
  • try.c:. 27 pour chaque fonction apparaît dans)

Pendant ce temps, en utilisant ce code PHP ...

<?php exec("gcc -o try try.c"); ?>

Le navigateur ne renvoie aucune sortie comme le fait le terminal. Existe-t-il un moyen possible direct ou indirect que les détails d'erreur que le terminal a montré puissent être transmis à l'affichage sur un navigateur?

Merci beaucoup.

+2

Il existe STDOUT et STDERR. La sortie que vous décrivez est probablement sur STDERR. Attrapez STDERR et renvoyez-le. – hakre

+0

peut-être 'echo exec();'? – tekknolagi

+0

@hakre cela aussi – tekknolagi

Répondre

0

Comme @hakre a indiqué dans les commentaires - vous pouvez simplement rediriger le flux STDERR, mais voici une autre solution:

exec('command here', $output, $exit_status); 
if ($exit_status !== 0) echo implode('<br />', $output); 

Si l'exécution a réussi - chaque programme doit retourner un état de sortie de 0 et tout autre code devrait signifier une sorte d'erreur.

Questions connexes