You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决FFmpeg在网站服务器上无法运行的问题?

解决FFmpeg在网站部署后无法运行的问题

核心问题排查与修复

  • 匹配服务器系统的FFmpeg版本
    你上传的是ffmpeg.exe这类Windows可执行文件,但服务器路径/home/mywebsitename/...明显是Linux系统,Linux根本跑不了Windows的exe文件。得下载对应Linux架构的FFmpeg二进制文件(比如x86_64版本),替换掉当前的exe文件,文件名改成ffmpeg(不带.exe后缀),再给它加执行权限:

    chmod +x /home/mywebsitename/public_html/ffmpeg
    
  • 捕获命令执行的错误信息
    当前用的system()函数只能返回退出状态,看不到FFmpeg的具体报错。换成exec()来捕获输出和错误,方便排查问题:

    <?php
    ini_set ('display_errors', 1);
    ini_set ('display_startup_errors', 1);
    error_reporting (E_ALL);
    $image1 = "/home/mywebsitename/public_html/uploads2/1.png";
    $image2 = "/home/mywebsitename/public_html/uploads2/2.png";
    $ffmpeg = "/home/mywebsitename/public_html/ffmpeg";
    $command = $ffmpeg." -i ".$image1." -vf scale=100:-2 ".$image2;
    
    // 捕获执行输出和错误
    exec($command . ' 2>&1', $output, $return_var);
    echo "退出状态:".$return_var."<br>";
    echo "输出信息:<pre>".print_r($output, true)."</pre>";
    ?>
    

    这样能直接看到FFmpeg运行时的具体问题,比如缺依赖、路径错了之类的。

  • 检查FFmpeg依赖库
    Linux版FFmpeg可能依赖系统里的库,比如libssl、libavcodec,要是缺这些库就跑不起来。可以用下面的命令查依赖:

    ldd /home/mywebsitename/public_html/ffmpeg
    

    输出里要是有not found的库,要么联系主机商装对应的包,要么直接下载静态编译版FFmpeg——静态版自带所有依赖,不用依赖系统库。

  • 确认路径与权限细节
    虽然设了777,但得确认:

    • uploads2目录确实存在,而且PHP进程能往里面写文件(有些主机对PHP的写入范围有限制,777也不一定管用)
    • 输入的1.png真的在指定路径里,别写错文件名或路径(可以用file_exists($image1)先验证一下)

额外优化建议

  • 别直接拼命令字符串,容易有注入风险,用escapeshellarg()处理路径更安全:
    $command = $ffmpeg." -i ".escapeshellarg($image1)." -vf scale=100:-2 ".escapeshellarg($image2);
    
  • 很多Linux主机本身就自带FFmpeg,你可以用which ffmpeg查它的路径,直接用这个系统路径就行,不用自己上传。要是主机禁用了自定义二进制文件,直接联系主机商确认能不能开权限。

内容的提问来源于stack exchange,提问作者Sam Cordin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:52:20