如何从php文件运行python人脸识别脚本?

问题描述 投票:0回答:1

我有一个Python人脸识别脚本,它使用opencv和face_recognition模块来检测和匹配人脸。 我想通过 php 文件来实现它。这样,每当打开 php 文件时,人脸识别脚本就会启动并打开 open-cv 窗口。然而我得到的只是一张空白页。如果脚本中仅写入 print("hello world"),则该脚本将运行。但真正的脚本不会使用相同的方法开始。 我的 php 和 python 文件都在同一目录中。

我尝试过的 php 代码是:

<?php
$command_exec = escapeshellcmd('python test.py');
$str_output = shell_exec($command_exec);
echo $str_output;
?>

这个只打印程序的第一行,上面写着“现在打开人脸识别窗口”


<?php
$command_exec = escapeshellcmd('python test.py');
shell_exec($command_exec);
?>

这个只给出一张空白页

我期望人脸识别窗口能够打开,就像我直接运行 python 脚本一样

现在的问题是我不应该使用 opencv-php。我也无法直接在网页上实现人脸识别。出于我的目的,我需要从 php 文件运行 python 脚本,然后运行人脸识别。

php python-3.x face-recognition
1个回答
0
投票
  1. 使用后台进程触发脚本 您可以使用 exec 或 shell_exec 将 Python 脚本作为后台进程运行。确保脚本在具有 GUI 权限的用户下运行。

修改您的 PHP 代码:

<?php
   exec("python3 /path/to/test.py > /dev/null 2>&1 &");
   echo "Python script started!";
  ?>

此命令在后台运行脚本。但是,如果 Web 服务器用户缺乏 GUI 访问权限,OpenCV 窗口可能仍然无法打开。

  1. 通过本地服务器运行Python脚本 不要直接从 PHP 运行 Python 脚本,而是使用本地 Python HTTP 服务器来处理人脸识别。 PHP 脚本可以向该服务器发送请求。

第1步:创建一个Python服务器(例如Flask),在触发时运行人脸识别脚本:

Python

from flask import Flask
import subprocess

app = Flask(__name__)

@app.route('/run-face-recognition', methods=['GET'])
def run_face_recognition():
    subprocess.Popen(["python3", "test.py"])
    return "Face recognition script started!"

if __name__ == "__main__":
    app.run(port=5000)

第2步:启动Flask服务器:

猛击

python3 flask_server.py

Step 3: Trigger the script from PHP:

PHP

<?php
 $url = 'http://localhost:5000/run-face-recognition';
 file_get_contents($url);
 echo "Face recognition script triggered!";
 ?>

这种方法将 Web 服务器 (PHP) 与 GUI 约束解耦,并确保更顺畅的执行。

3.使用桌面环境 确保 Python 脚本在具有 GUI 访问权限的用户下运行。修改 PHP 脚本以将用户切换到登录桌面会话的用户。

修改test.py:

**Python**
import os
import cv2

 os.environ["DISPLAY"] = ":0"  # Set the display variable for GUI access
 # Your OpenCV code here
 Ensure the web server has permissions to access the GUI session:

猛击

sudo xhost +SI:localuser:www-data
Modify PHP to execute the script:

PHP

 <?php
 exec("python3 /path/to/test.py");
 echo "Face recognition started!";
 ?>

4。调试技巧 测试 Python 脚本在 PHP 上下文之外是否正确运行:

猛击

python3 /path/to/test.py
Log errors to understand what’s failing:

PHP

<?php
 $output = shell_exec('python3 /path/to/test.py 2>&1');
 echo "<pre>$output</pre>";
 ?>
© www.soinside.com 2019 - 2024. All rights reserved.