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
来看实时日志。