如何在PHP中使用"exec"函数运行服务器上的Python文件,能否使用URL或仅限于文件系统路径?
我写了一个简单的Python脚本,然后在PHP中用“exec”来运行这个脚本。这个Python和PHP文件都上传到了大学的服务器上,服务器使用的是安装在Windows上的Apache网页服务器。我在大学的服务器上安装了Python 2.7的可执行文件。
但是,PHP通过exec命令没有接收到数据:
array(0) { } Array ( ) after output
我试过使用system()函数:
before exec vardump int(2) mystring string(0) "" printr output 2
这是我的PHP代码:
echo "before exec";
$command = "C:\\Python27\\python.exe C:\\path\\py\\prova.py";
$command .= " $param1 2>&1";
$mystring = system($command, $output);
print(" vardump ");
var_dump($output);
print(" mystring ");
var_dump($mystring);
print(" printr output ");
print_r($output);
这是我的Python代码:
#PATHMAIN
if len(sys.argv) > 1:
sys.argv[1].replace("\\\\", "\\")
path1img = sys.argv[1]
else:
path1img = "http://site/folder/Images/Highres/d (0).jpg"
def comparison(path1img):
import numpy as np
from numpy import array
import cv2
import predict as pr
#import bp1img
import moduloSkeleton
listafeaturevector = list()
featurev = list()
sep = list()
sbp = list()
sangle = list()
a = 111111111111111111111111111111
print("hello")
return a
我还尝试过其他方法:
$command = "python \site\py\prova.py";
$command = "python http://site\\folder\\py\\prova.py";
$command = "C:Python27\\python http://site\\folder\\py\\prova.py";
$command = "C:Python27\\ \\folder\\py\\prova.py"
$command = "python27 \\folder\\py\\prova.py"
$command = "python27 http://site\\folder\\py\\prova.py"
$command = "C:\\python27\\python C:\\path\\py\\prova.py"
1 个回答
0
好吧,这里有个很简单的问题。你在服务器上有一个叫做 prova.py
的文件。当有人向你的服务器发起某种HTTP请求时,你希望服务器能通过运行这个Python程序(这个程序存放在服务器的硬盘上)来回应,并把结果发送回浏览器(或者其他网页客户端)?
简单看一下 https://www.php.net/function.exec 的内容,似乎你真正需要的更像是 exec("/disk/path/to/prova.py")
。如果这样不行,那我也没别的办法了。至于你该如何处理输出,抱歉,我是个Python程序员。没看到PHP的朋友们急着来帮忙……