Shell Script - PHP - error de visualización

I'm using PHP function shell_exec()to execute Shell Script. When I use this(correct) syntax, it displays output normally

echo shell_exec("ls -l");

But, for some reason, if user enters invalid command like this

echo shell_exec("lsl -l");

by default, it should give error as it gives on terminal. But, it doesn't display anything. is there any way to catch and display errors as well; via PHP?

preguntado el 22 de mayo de 14 a las 13:05

puedes intentar echo shell_exec("lsl -l 2>&1"); -

2 Respuestas

That's because the output of the error goes to STDERR, mientras shell_exec solo lee STDOUT. The simplest solution would probably be to pipe STDERR a STDOUT:

<?php
echo shell_exec('lsl -l 2>&1');

If you only want to know if the command was successful, I would use ejecutivo rather than shell_exec, as you can get the return value.

contestado el 22 de mayo de 14 a las 13:05

Thats what the comment says :) - pradyjord

Desde el Documentos PHP:

Esta función puede devolver NULL tanto cuando ocurre un error como cuando el programa no produce ningún resultado. No es posible detectar fallas de ejecución utilizando esta función. exec() debe usarse cuando se requiere acceso al código de salida del programa.

Si eliges usar exec () instead, you can supply a third param to the function which will return the output of the arguments:

exec ( string $command [, array &$output [, int &$return_var ]] )

If the return_var argument is present along with the output argument, then the return status of the executed command will be written to this variable.

contestado el 22 de mayo de 14 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.