在PHP中处理Python异常/错误

在PHP中处理Python异常/错误,php,python,error-handling,Php,Python,Error Handling,我正在使用PHP的exec($cmd$output)函数从PHP脚本中运行一些python脚本 表示程序的所有输出都写入$output数组。但是,如果Python代码引发异常/错误,那么函数似乎只返回NULL,而没有任何关于异常的信息 例如: 运行python.py print('starting python') x = 1/0 #This will raise an error print('complete python') 从交互式PHP shell运行它会产生以下结果: php &g

我正在使用PHP的
exec($cmd$output)
函数从PHP脚本中运行一些python脚本

表示程序的所有输出都写入
$output
数组。但是,如果Python代码引发异常/错误,那么函数似乎只返回NULL,而没有任何关于异常的信息

例如:

运行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
php>$output='';
php>$ret_val=exec('python run_python.py',$output);
回溯(最近一次呼叫最后一次):
文件“run_python.py”,第2行,在
x=1/0
$output
数组只包含
启动python
,而
$ret\u val
不包含任何内容

对于交互式shell来说,这是可以的,但是我正在从web界面运行代码,并且永远不会显示错误信息。是否有办法捕获该错误,然后使用
echo
显示该错误


我确实尝试了,但没有成功。

将stderr重定向到stdout

$ret_val = exec('python run_python.py 2>&1', $output);
您可以使用:exec('python run_python.py',$output,$return_var)执行此操作,错误代码在$return_var,回溯在$output,您可以通过执行

exec ( 'python run_python.py', $output,$return_var );
if ($return_var>0) {
    var_dump($output);
}