Home > Article > Backend Development > What should I do if system() in php does not return output?
Solution to the problem that system() in php does not return output: redirect the standard error to the standard output by appending [2 >& 1] to the command, for example [exec('some_command -- option 2>& 1', $output, $ret);].
The operating environment of this article: windows10 system, php 7, thinkpad t480 computer.
Recently when I was working, I accidentally discovered that executing common commands like 'ls', exec() can work normally, for example:
exec('ls',$输出,$ retval); var_dump($ output,$ retval); // $ output包含文件名数组,retval === 0
But when I try to execute another program, I Unable to get the output, as follows:
exec('some_command --a_parameter',$ output ,$ retval); var_dump($ output,$ retval); // $ output包含一个空数组,结束$ retval === 0
When executing the command directly from the command line, some lines will be printed. I know that the command execution was successful and I can see the results (some file updates, data additions, etc.), but I No output is visible.
The exec() function will only capture standard output. I'm not sure that standard error is always sent to the apache error log, but it seems to be possible.
If you don’t need to use a unix system, we can actually redirect the standard error to the standard output by appending 2>& 1 to the command, so that the problem can be solved, for example:
exec('some_command --option 2>& 1',$ output,$ ret);
Recommended learning: php training
The above is the detailed content of What should I do if system() in php does not return output?. For more information, please follow other related articles on the PHP Chinese website!