PHP 调用 Python 代码踩坑记录

PHP 如何调用 Python 代码之前老王已经给大家介绍过了,用 exec 就可以直接调用并获取返回值,详细的教程可以参考《PHP 调用 Python 代码教程,向 Python 传参 + 接收返回值》,本文主要给大家记录下老王在用 PHP 调用 Python 中遇到的一些问题。

1、开启 exec

其实这个都没必要说了,毕竟是前提。具体的就是编辑 php.ini,在 disable_functions 后面将 exec 删了即可。

2、Python 正常运行,用 PHP 运行就报错

这是一个非常诡异的问题,直接 pythons3 file.py 是完全正常的,但是用 PHP 调用时就直接抛出错误异常:'ascii' codec can't encode character '\xed' in position 84,看样子的编码的问题,print 出的那个变量中有一段中文字符,形如:shíhuà yī xiǎo, Jingmen, Hubei (荆门石化一小),取消 print 这个变量就可以了。

3、Python 写好 try exception

有些人在写 Python 时不喜欢写 try exception,因为 PHP 得到的是所有 Python 代码中 print 出的结果,如果中途 Python 因为异常终止了,如果你 PHP 端用的是 end($out) 获取最后的结果,那么这个结果就会是一个中途的 print 输出。

4、PHP 保存 Python 所有输出日志

如果你想看 Python 所有的 print 输出来调试代码,那么可以在 PHP 端实现。在《PHP 调用 Python 代码教程,向 Python 传参 + 接收返回值》已经介绍了,exec 方法的第二个参数 $output 就是所有输出,那么你可以这样保存日志:file_put_contents($folderPath . 'python.log', PHP_EOL . implode("",$output) . PHP_EOL, FILE_APPEND);,再使用 tail -f python.log 来看实时日志。

赞(0)
关注我们
未经允许不得转载:老王博客 » PHP 调用 Python 代码踩坑记录

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址