您的位置:首页 > 编程语言 > Python开发

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

2015-04-18 00:34 393 查看
最近有用到支持向量机(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吧么么哒
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: