所以我尝试使用此代码从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再返回吗?
答案 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