如何在PHP中使用"exec"函数运行服务器上的Python文件,能否使用URL或仅限于文件系统路径?

0 投票
1 回答
594 浏览
提问于 2025-04-17 20:44

我写了一个简单的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的朋友们急着来帮忙……

撰写回答