sh:/ usr/bin/ffmpeg:找不到

Rio*_*Rio 5 php audio video ffmpeg

我正在尝试使用shell_exec或exec从PHP执行ffmpeg,但它失败了.为什么会这样?该命令/usr/bin/ffmpeg在终端上运行,所以我试过了

<?php
$cmd = "/usr/bin/ffmpeg";
exec($cmd." 2>&1", $out, $ret);
if ($ret){
    echo "There was a problem!\n";
    print_r($out);
}else{
    echo "Everything went better than expected!\n";
}
?>
Run Code Online (Sandbox Code Playgroud)

而且我继续得到

There was a problem! Array ( [0] => sh: /usr/bin/ffmpeg: not found )
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

可执行文件的权限是

-rwxr-xr-x  1 root   root      106552 Jun 12 09:53 ffmpeg
Run Code Online (Sandbox Code Playgroud)

运行which /usr/local/bin/ffmpeg到$ cmd会返回一个空数组.

Yes*_*rry 6

您的问题的答案可能比预期的简单.你正在检查两个/usr/local/bin /usr/bin.有多种解决方案.

  1. 你可以跑$ whereis ffmpeg,看看你得到了什么.根据结果​​,更改您的$cmd变量.如果whereis什么都不返回,那么你的系统不知道它在哪里.您可以将其添加到$PATH环境变量中,然后重试.

  2. 你可以尝试运行$ find /usr -name "ffmpeg"或类似的东西.通过确保安装此程序,它将帮助您更快地解决此问题.

  3. 如果存在某种限制,拒绝apache访问/使用ffmpeg的能力,您可以始终将其存储在文档根目录中的bin文件夹中.(比如/ path/to/doc/root/bin/ffmpeg)之前我已经这样做了所以我知道它有效.


如果您发现ffmpeg实际位于/usr/local/bin当时,您应该尝试将您更改$cmd为:

$cmd = '/usr/local/bin/ffmpeg';
Run Code Online (Sandbox Code Playgroud)

  • 是的,我最终制作了ffmpeg的副本并将其存储在我自己的本地文件夹中。我想这就是你说的3。 (2认同)