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
然后写一个很简单的PHP脚本index.php去跑它
这时发现打印出来的$data是NULL,说明没有跑成功。但是在命令行直接执行php命令却可以得到想要的结果。原因是PHP不允许shell_exec函数在服务器中运行。
此时编辑php.ini文件,加上safe_mode = Off,重启服务器,问题解决。
这样一来,PHP项目就可以和Python部署在一起,彼此之间直接通过xml文件或者nosql数据库进行数据交换了。当然因为关闭了PHP的safe_mode模块,由于手上这个项目科研的性质较浓影响不大,对于商业项目,如果不是特别有把握,还是老老实实开发API吧么么哒
这就有了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吧么么哒
相关文章推荐
- 利用python 通过邮件执行系统命令
- C#通过调用系统命令执行R脚本
- 使用python脚本执行系统命令
- 通过PHP执行系统命令
- PHP通过bypass disable functions执行系统命令的方法汇总
- python:通过python脚本快速执行 bash 命令
- PHP执行python脚本的passthru()函数使用及注意事项总结
- PHP 执行系统外部命令 system() exec() passthru()
- Ubuntu系统下用Crontab命令定时执行PHP文件详解
- 把php.exe加入系统环境变量-使用命令行可快速执行PHP命令
- windows linux 使用python执行系统命令并将结果保存到变量
- Python+selenium创建自动执行命令脚本
- websocket+Django+python+paramiko实现web页面执行服务器命令和脚本
- python 执行系统命令比较
- PHP调用python,shell命令执行成功,web运行失败
- PHP 执行系统外部命令的方法 system() exec()
- 通过shell脚本循环进入目录执行命令
- Python:通过Socket让远程电脑执行某些命令
- Windows环境下如何在cmd(命令执行窗口)运行python脚本文件。
- Python中执行系统命令常见的几种方法--转载