我正在使用PHP的exec($cmd, $output)
函数在PHP脚本中运行一些python脚本。
documentation表示程序的所有输出都写入$output
数组。这很好,但是,如果Python代码引发异常/错误,该函数似乎只返回NULL,没有任何关于异常的信息。
例如:
run_python.py
print('starting python')
x = 1/0 #This will raise an error
print('complete python')
从交互式PHP shell 运行它会产生以下结果:
php > $output = '';
php > $ret_val = exec('python run_python.py', $output);
Traceback (most recent call last):
File "run_python.py", line 2, in <module>
x = 1/0
$output
数组仅包含starting python
,$ret_val
不包含任何内容。
这对于交互式shell来说没问题,但是我从Web界面运行代码并且永远不会显示错误信息。有没有办法捕获该错误,然后使用echo
显示它?
我确实尝试了shell_exec和passthru,但没有成功。
答案 0 :(得分:1)
将stderr重定向到stdout
$ret_val = exec('python run_python.py 2>&1', $output);
答案 1 :(得分:0)
您可以使用:exec(&#39; python run_python.py&#39;,$ output,$ return_var),您将在$ return_var处获得错误代码,并在$ output处获得回溯,以及你可以通过
看到它exec ( 'python run_python.py', $output,$return_var );
if ($return_var>0) {
var_dump($output);
}