从Laravel 4控制器执行Python脚本


Executing Python script from Laravel 4 Controller

我试图从我的控制器执行Python脚本。在我的控制器目录中,我创建了一个名为pythonScripts的文件夹,我在其中放置了脚本。从我的控制器函数中,我从数据库中获取数据,以json格式,并将其传递给python以创建网络,然后使用networkx对网络进行一些分析。问题是,我无法执行脚本。下面是我运行脚本的代码。

$output = array();
exec("/pythonScripts/createNetwork.py '{$connections}' ", $output);
return json_encode($output);

其中$connections为用户与其他用户连接的JSON数据。

在python脚本中,目前,我只打印传入的内容,以查看脚本是否正在执行,但返回的是一个空数组[]。以下是我的python脚本。

import json
import networkx as nx 
import sys
from networkx.readwrite import json_graph

def main():
    userJSONData = sys.argv[1] #the JSON format of user data will be passed into this script.
    print userJSONData

if __name__ == '__main__':
    main()

我不能告诉如果脚本正在执行…任何帮助吗?

您必须从脚本执行中获得返回值以检查它是否成功(== 0),如果脚本不可执行,您还必须调用python:

exec("/usr/bin/python /pythonScripts/createNetwork.py '{$connections}'", $output, $return);
if ($return) {
    throw new 'Exception("Error executing command - error code: $return");
}
var_dump($output);