php从另一个目录执行python脚本

时间:2019-03-18 20:04:25

标签: php python apache2 system

我有一个PHP脚本,该脚本调用一个Python脚本(带有参数):

<?php
$UPLOAD_DIR = 'tmp';
$AUDIOSPLIT = "../audiotranscri/scripts/audiospliter.py";
// This also fails using a symlink in the same dir
//$AUDIOSPLIT = "spliter";
$media_path = "tmp/media.mp3";
$subtitles_path = "tmp/mediasub.ass";

$cmd = "python3 ".$AUDIOSPLIT." ".$media_path." ".$subtitles_path." ".$UPLOAD_DIR;
echo($cmd);
system($cmd,$returnv);
echo($returnv);
?>

当我从bash终端运行此程序时,它会起作用

$ php7.2 dummy.php 

但是从网站(带有PHP的Apache2)调用它时失败。 为什么?

N.B:我确信Apache和PHP可以正常运行,因为phpinfo()可以完美地工作。版本是PHP 7.2.15,ubuntu 18.04.1,Apache 2.4.29。

1 个答案:

答案 0 :(得分:0)

考虑尝试以下方法之一:

使用程序的完整路径,因为使用system()时可能未设置PATH-将“ python3”更改为“ / usr / bin / python3”,或者将python3放在任何位置。

使用另一个函数exec(),shell_exec(),passthrough()

在通过http运行时,检查您的Web服务器是否允许您运行给定的功能;检入php.ini;或检查通过http访问的php脚本。

<?php
$function_name = "system";
if ( function_exists($function_name) ) {
    echo "$function_name is enabled";
}
else {
    echo "$function_name is not enabled";
}