在 PHP 中处理 Python exception/errors

handle Python exception/errors in PHP

我是 运行 一些 python 脚本,来自 PHP 脚本,使用 PHP 的 exec($cmd, $output) 函数。

documentation 声明程序的所有输出都写入 $output 数组。这工作正常,但是,如果 Python 代码引发 exception/error,该函数似乎只是 return 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 and passthru,但没有成功。

将 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);
}