PHP通过系统命令执行Python脚本

最近有用到支持向量机(SVM)搞机器学习的需求,目前Python对这块的支持还是蛮好的,然而前台对数据的展示和处理还是选择使用PHP来实现。

这就有了PHP和Python模块通信的需求,最初的想法是把Python模块作为一个独立的项目和PHP模块基于API进行通信,找了个Python的rest API框架EVEPython REST API Framework,但是这个框架除了官方文档以外,资料不多,部署起来比较麻烦,针对这个项目Python并没有做web展示的需求,那么去用个Python的web框架显然不是很划算。

这时候想到是否可以用PHP直接调用系统命令来执行Python模块,查手册,发现exec和shell_exec函数。其中exec可以把执行的结果全部返回到$output函数里(数组),$status是执行的状态 0为成功 1为失败。shell_exec直接返回运行结果。

我们先准备一个简单的Python脚本01.py

print 'this is a Python program with PHP'

然后写一个很简单的PHP脚本index.php去跑它

<?php
	$order = 'python 01.py';
        $data = shell_exec($order);

        var_dump($data);
?>

时发现打印出来的$data是NULL,说明没有跑成功。但是在命令行直接执行php命令却可以得到想要的结果。原因是PHP不允许shell_exec函数在服务器中运行。

此时编辑php.ini文件,加上safe_mode = Off,重启服务器,问题解决。





这样一来,PHP项目就可以和Python部署在一起,彼此之间直接通过xml文件或者nosql数据库进行数据交换了。当然因为关闭了PHP的safe_mode模块,由于手上这个项目科研的性质较浓影响不大,对于商业项目,如果不是特别有把握,还是老老实实开发API吧么么哒

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值