php调用python获取返回值_PHP 调用 Python 代码教程,向 Python 传参 + 接收返回值

磊落不羁 by:磊落不羁 分类:网络接口 时间:2年前 阅读:205 评论:0

以下文章 引用

今天一个项目的服务器代码语言从 Java 改成了 PHP,因为算法是用 Python 写的,所以就需要在 PHP 中调用 Python 脚本,包括向 Python 传参,Python 接收参数后处理数据,再把处理结果传回给 PHP,最后 PHP 返回给客户端。在 PHP 中使用的工具是 exec 调用的 Python 脚本,本文记录下使用教程。

一、在 php.ini 中开启 exec

出于安全考虑,PHP 的 exec 命令默认是关闭的,所以我们首先需要开启 exec。

如果你也使用的是 LNMP 一键安装包,那么 php.ini 路径是在 /usr/local/php/etc 下,编辑 php.ini,在 disable_functions 后面将 exec 删了即可,之后用 lnmp php-fpm restart 重启 PHP 服务。

这里首先放一下我的调用代码,之后再逐一介绍参数:

exec("python3 /home/wwwroot/*******/SeeAir/Main.py {$lat} {$lng} {$folder_path} {$image_name}", $out, $res);

exec 一共有 3 个参数,即exec ( string $command [, array &$output [, int &$return_var ]] ),在 $command 中完成从 PHP 向 Python 的传参,Python 对 PHP 的返回值则存在 $output 中:

第一个参数就是调用 Python 代码的命令行命令,跟我们直接在命令行调用 Python 一样。以我的调用代码为例,我一共向 Python 传递了 4 个参数,$lat、$lng、$folder_path、$image_name 都是 PHP 变量,也是 Python 代码中需要用到的变量;

第二个参数就是 Python 运行过程全部的输出,例如所有 print 的数值都会存在 $out 中,而 $out 是一个数组,如果我只需要 $out 最后一个输出,那么就可以借助 end 函数:$value = end($out);

第三个参数 $res 返回是否调用成功,0 代表成功,1 代表失败。

以上就是老王这次在 PHP 调用 Python 脚本的全部过程,总的来说还是比较方便的,跟命令行直接用 Python 脚本差不多。


非特殊说明,本文版权归原作者所有,转载请注明出处

本文地址:http://php.liulei.com.cn/?type=acticle&id=34

评论列表

发表评论

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

TOP