【问题标题】:php execute a python script from another directoryphp 从另一个目录执行 python 脚本
【发布时间】:2019-03-18 20:04:24
【问题描述】:

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

<?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 

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

N.B:我确信 Apache 和 PHP 运行良好,因为 phpinfo() 运行良好。版本为 PHP 7.2.15、ubuntu 18.04.1、Apache 2.4.29。

【问题讨论】:

  • 你遇到了什么错误?
  • 我会在这样的应用程序中使用完整路径名,而不是相对路径名
  • 没有错误信息。我试过完整的路径没有用。

标签: php python apache2 system


【解决方案1】:

考虑尝试以下方法之一:

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

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

检查您的网络服务器是否允许您在通过 http 运行时运行给定的功能,检查您的 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";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 2013-12-26
    • 2016-09-03
    • 1970-01-01
    相关资源
    最近更新 更多