【发布时间】:2017-05-23 15:45:49
【问题描述】:
我正在使用 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,但没有成功。
【问题讨论】:
标签: php python error-handling