【问题标题】:exec(ffmpeg) is not executing in php but will in terminal?exec(ffmpeg) 不在 php 中执行,但会在终端中执行?
【发布时间】:2017-08-14 02:53:15
【问题描述】:

我有一个允许用户上传视频的网站,我有安装了 ffmpeg 的 VPS 服务器,安全模式已关闭,并在我的终端中测试了命令,但是当我尝试在 exec 中运行命令时,它在 php 脚本中工作( ) 甚至 shell_exec() 它都不会执行。下面是我的代码(更改了一些隐私变量)。

$video_name = $_FILES["post_vid"]["name"];
$Vurl = "/folder1/folder2/$vrand_file_name/$video_name";
$VnewName = $vrand_vid_name .".mp4";
$VurlNew = "/folder1/folder2/$vrand_file_name/$VnewName";
$convertold = "/home/user/directory/domain.com/$Vurl";
$convertNew = "/home/user/directory/domain.com/$VurlNew" ;
$ffmpegC = "/user/local/bin/ffmpeg";
exec($ffmpegC.' -y -i "'.$convertold.'" -f mp4 "'.$convertNew.'"');

我在运行正常的 move_uploaded_file() 之后有代码。 还检查了,我的 php 使用与我的终端相同的用户... 任何对此的见解都会很棒,在此先感谢。

【问题讨论】:

    标签: php ffmpeg


    【解决方案1】:

    请将exec附近的代码修复如下,你能试试吗?

    $command = $ffmpegC.' -y -i "'.$convertold.'" -f mp4 "'.$convertNew.'" 2>&1';  
    exec($command, $array);
    var_dump($array);
    exit;
    

    通过使用2>&1stderror 被输入到$array

    这样你就可以看到原因了。

    祝你好运!

    【讨论】:

    • 似乎没有什么区别......它没有像在终端中那样创建 mp4 文件,现在添加了exit;,它不会运行脚本的其余部分,我尝试移动它并保持相同的结果。
    • 啊,是的,对不起,我脑子一片空白……array(1) { [0]=> string(53) "sh: /user/local/bin/ffmpeg: No such file or directory"}
    • 运行$ which ffmpeg会得到什么。
    • 猜应该是/usr/local/bin/ffmpeg而不是/user/local/bin/ffmpeg
    • 这就是原因。我也没注意到。
    猜你喜欢
    • 1970-01-01
    • 2014-03-11
    • 2016-01-07
    • 1970-01-01
    • 2017-05-06
    • 2016-04-07
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多