FFMPEG可以从命令行工作,但不能从PHP工作

FFMPEG可以从命令行工作,但不能从PHP工作,php,ffmpeg,exec,Php,Ffmpeg,Exec,我刚刚遇到了一个奇怪的情况。FFMPEG不再从PHP执行,而是从命令行执行 下面是命令的具体内容: ffmpeg -i ../../uploads/ee78d5deb564901626067cc0008456ed.mp3 -ab 96k -y ../../uploads/mp3/ee78d5deb564901626067cc0008456ed_6203688.mp3 如何在PHP脚本中执行它: if(! exec("ffmpeg -i ".$target_path."".$hash_filen

我刚刚遇到了一个奇怪的情况。FFMPEG不再从PHP执行,而是从命令行执行

下面是命令的具体内容:

ffmpeg -i ../../uploads/ee78d5deb564901626067cc0008456ed.mp3 -ab 96k -y ../../uploads/mp3/ee78d5deb564901626067cc0008456ed_6203688.mp3
如何在PHP脚本中执行它:

if(! exec("ffmpeg -i ".$target_path."".$hash_filename.".".$path_extension." -ab 96k -y ".$target_path."mp3/".$hash_filename."_".$session_ID.".mp3")){
    echo 'ffmpeg failed';
}

此命令确实有效,但不再有效。我最近更新了plesk,但我高度怀疑它是否影响了这一点。我认为我最近做的唯一能影响它的事情就是将文件上传到一个子域。因此,命令中文件所在和存储的目录位于文档根目录之外的目录中。但是,
move\u uploaded\u file
函数起作用,我将PHP ini中的
open\u basedir
更改为webspace root。

tail-f/var/log/apache2/error\u log

让我们知道你在那里看到了什么…根据你的平台进行调整

这适用于lamp(opensuse)

您可以尝试使用system()命令。它将从服务器返回响应

system("ffmpeg -i ".$target_path."".$hash_filename.".".$path_extension." -ab 96k -y ".$target_path."mp3/".$hash_filename."_".$session_ID.".mp3")
如果当前版本的php不支持ffmpeg,它将返回错误

您可以修改命令以获得具有正确路径的ffmpeg。在我的例子中,它的工作原理如下

exec("/usr/local/bin/ffmpeg -i ".$target_path."".$hash_filename.".".$path_extension." -ab 96k -y ".$target_path."mp3/".$hash_filename."_".$session_ID.".mp3"))

您可以尝试使用$error=array()输出错误;exec(“您的命令在这里”$error);变量转储($error);