簡體   English   中英

從PHP運行venv Python腳本

[英]Running venv Python script from PHP

我正在運行PHP的許多python腳本。 我的php腳本模板如下:

<?php
setlocale(LC_ALL, "en_US.utf8");
header("Content-Type: application/json");
header("Access-Control-Allow-Origin: *");

$command = escapeshellcmd("/usr/bin/python2.7 /path/to/script");
$args = escapeshellarg($_GET["title"]). " " . 
escapeshellarg($_GET["user"]);
$output = shell_exec($command . " " . $args);
echo $output;

但現在我需要運行一些虛擬環境中的python腳本。

我試圖用./www/python/venv/bin/python3替換/usr/bin/python2.7 ,但它不起作用。

那么如何在PHP中運行它?

要真正運行venv,你需要在shell中執行三個步驟:

  1. 轉換為項目根目錄。
  2. 來源venv/bin/activate
  3. 運行python path/to/script

先決條件您已經為項目准備了虛擬環境。

您可以將這三個步驟組合成一個bash腳本,並從PHP調用此腳本。

理想情況下,您應該使用APIs ,這是最佳做法。 但是,如果您沒有可用的API ,則可以使用pipe
這可以像這個函數一樣使用: exec_command($command)其中,
$command = $command . " " . $args
以下是代碼:

<?php
setlocale(LC_ALL, "en_US.utf8");
header("Content-Type: application/json");
header("Access-Control-Allow-Origin: *");

$command = escapeshellcmd("/usr/bin/python2.7 /path/to/script");
$args = escapeshellarg($_GET["title"]). " " . 
escapeshellarg($_GET["user"]);

$command = $command . " " . $args;

$output = "";
$hd = popen($command, "r");
while(!feof($hd))
{
  $output .= fread($hd, 4096);
}
pclose($hd);

echo $output;

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM