【问题标题】:handle Python exception/errors in PHP在 PHP 中处理 Python 异常/错误
【发布时间】: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


    【解决方案1】:

    将标准错误重定向到标准输出

    $ret_val = exec('python run_python.py 2>&1', $output);
    

    【讨论】:

      【解决方案2】:

      你可以用 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);
      }
      

      【讨论】:

        猜你喜欢
        • 2012-09-15
        • 2011-04-03
        • 2017-05-29
        • 2011-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-03
        • 1970-01-01
        相关资源
        最近更新 更多