我正在从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脚本。
我尝试将/usr/bin/python2.7
替换为./www/python/venv/bin/python3
,但无效。
那么如何在PHP中运行它?
答案 0 :(得分:2)
要真正运行venv,您需要在shell中执行三个步骤:
venv/bin/activate
python path/to/script
前提条件您已经为项目准备了虚拟环境。
您可以将这三个步骤组合成一个bash脚本,然后从PHP调用该脚本。
答案 1 :(得分:1)
理想情况下,您应该使用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;
?>