通过 php 执行 python 脚本
Executing a python script via php
所以我正在尝试使用此代码
从 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 服务器 2012 r2 上 运行 IIS 这是我的问题吗?我正在尝试做的事情是否可行?
另外,如果可能的话,我可以将变量从 php 交换到 python 然后再交换回来吗?
这是非常糟糕的事情。这是非常骇人听闻且不安全的解决方案。请记住这一点。
话虽如此,您应该寻找在控制台中执行命令的 php system
函数,而不是 exec
.
有多种方法可以将变量从 php 脚本传输到 Python。您可以将数据写入 MySQL 数据库,然后从 Python 脚本读取它们。您可以使用 php zip 和 json_encode 函数打包 JSON 中的所有变量,将 JSON 保存到磁盘上的文件中,然后从 [=] 中的相同位置读取它39=] 脚本。
最简单的方法是在您的 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,然后在 PHP 中读取和解析此 JSON Python 脚本执行完成后的脚本。
现在,虽然我告诉过你该怎么做,但你绝对不应该这样做。更好的方法是在 Python 上编写一个 CGI 脚本,它将处理请求并完成您最初在 Python.You 中编写的工作,可以在此处阅读更多内容 - https://www.linux.com/blog/configuring-apache2-run-python-scripts
所以我正在尝试使用此代码
从 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 服务器 2012 r2 上 运行 IIS 这是我的问题吗?我正在尝试做的事情是否可行?
另外,如果可能的话,我可以将变量从 php 交换到 python 然后再交换回来吗?
这是非常糟糕的事情。这是非常骇人听闻且不安全的解决方案。请记住这一点。
话虽如此,您应该寻找在控制台中执行命令的 php system
函数,而不是 exec
.
有多种方法可以将变量从 php 脚本传输到 Python。您可以将数据写入 MySQL 数据库,然后从 Python 脚本读取它们。您可以使用 php zip 和 json_encode 函数打包 JSON 中的所有变量,将 JSON 保存到磁盘上的文件中,然后从 [=] 中的相同位置读取它39=] 脚本。
最简单的方法是在您的 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,然后在 PHP 中读取和解析此 JSON Python 脚本执行完成后的脚本。
现在,虽然我告诉过你该怎么做,但你绝对不应该这样做。更好的方法是在 Python 上编写一个 CGI 脚本,它将处理请求并完成您最初在 Python.You 中编写的工作,可以在此处阅读更多内容 - https://www.linux.com/blog/configuring-apache2-run-python-scripts