处理PHP中的Python异常/错误

时间:2015-02-23 22:46:24

标签: php python error-handling

我正在使用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_execpassthru,但没有成功。

2 个答案:

答案 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);
}