通过php执行python脚本

时间:2016-08-19 17:39:17

标签: php python

所以我尝试使用此代码从php执行python脚本

exec('C:\Python27\python.exe    C:\WEBSITE_DATA\script.py');

或双退格......

exec('C:\\Python27\\python.exe    C:\\WEBSITE_DATA\\script.py');

脚本正常运行并在正常运行时生成形状文件,因此问题不在.py文件中。

我更改了权限,允许每个人完全控制python27文件夹和网站数据文件夹,只是为了检查它是否是权限问题

php日志没有任何错误,所以我不能追逐没有任何错误或代码问题

我在Windows服务器上运行IIS 2012 r2这是我的问题吗?我正在努力做甚么可能吗?

如果有可能我可以将变量从php交换到python再返回吗?

1 个答案:

答案 0 :(得分:1)

这是非常糟糕的事情。这是非常hacky和不安全的解决方案。记住这一点。

说到这一点,你应该寻找在控制台中执行命令的php system函数,而不是exec

有多种方法可以将变量从php脚本传输到Python。您可以将数据写入MySQL数据库,然后从Python脚本中读取它们。您可以使用php zip和json_encode函数将所有变量打包在JSON中,将JSON保存到磁盘上的文件中,然后从Python脚本中的相同位置读取它。

最简单的方法是在system电话中执行此操作:

system("C:\Python27\python.exe /path/to/script.py $a $b $c")

这样变量就是Python脚本的参数。你可以在sys.argv数组中读取它们:

import sys
a = sys.argv[1] # Note that the first argument is [1], not [0]
b = sys.argv[2]
...

要将值传回PHP脚本,我建议做同样的事情 - 将它们保存到磁盘上的JSON,然后在完成Python脚本的执行后,在PHP脚本中读取和解析这个JSON。

现在,虽然我告诉你如何做到这一点,但你绝对不应该这样做。更好的方法是在Python上编写CGI脚本,处理请求并完成最初用Python编写的工作。您可以在这里阅读更多内容 - https://www.linux.com/blog/configuring-apache2-run-python-scripts