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

FFMPEG配合PHP转视频本地及Linux终端正常、网站无法运行如何解决

问题排查&解决方案

  • 1. 检查目录权限
    确认站点根目录下的original和converted两个目录,对web服务运行用户(常见为www-data、apache、nginx)开放读写权限,可执行以下命令授权(按需替换用户和路径):
    chown -R www-data:www-data /path/to/your/site/original /path/to/your/site/converted
    chmod -R 755 /path/to/your/site/original /path/to/your/site/converted
    
  • 2. 验证FFmpeg可执行权限&编码支持
    先确认web用户有权限调用FFmpeg,执行以下命令测试(替换为实际的web运行用户):
    sudo -u www-data /usr/bin/ffmpeg -version
    
    再确认FFmpeg已编译libx264编码支持:
    /usr/bin/ffmpeg -encoders | grep libx264
    
    无输出则说明缺少x264依赖,Debian/Ubuntu可执行apt install -y ffmpeg x264 libx264-dev安装完整版本。
  • 3. 检查PHP配置限制
    查看php.ini配置,确认以下项符合要求:
    • disable_functions 中未禁用exec、shell_exec等执行函数
    • upload_max_filesize、post_max_size 大于你要上传的视频大小
    • max_execution_time、max_input_time 调大到600以上,避免视频转换超时被中断
  • 4. 修复代码逻辑缺陷
    你当前代码没有做错误判断,且命令拼接存在风险,建议做以下修改:
    1. 所有执行命令的参数用escapeshellarg转义,避免特殊文件名导致命令执行失败
    2. 执行完FFmpeg后先判断返回状态,失败则输出convert.txt日志排查原因
    3. 用绝对路径拼接文件,避免相对路径出错
      参考修改后的代码片段:
    // 用绝对路径避免目录匹配错误
    $uploads_dir = __DIR__ . '/original/';
    $converted_dir = __DIR__ . '/converted/';
    // 目录不存在则自动创建
    if (!is_dir($uploads_dir)) mkdir($uploads_dir, 0755, true);
    if (!is_dir($converted_dir)) mkdir($converted_dir, 0755, true);
    
    // 转义命令参数
    $input_path = escapeshellarg($uploaded_file);
    $output_path = escapeshellarg($converted_dir . $video_mp4);
    exec($ffmpeg . ' -i ' . $input_path . ' -c:v libx264 ' . $output_path . ' -y 1>convert.txt 2>&1', $output, $convert_status['mp4']);
    
    // 执行失败输出错误日志
    if ($convert_status['mp4'] !== 0) {
        echo "转换失败,错误日志:<br>";
        echo nl2br(file_get_contents(__DIR__ . '/convert.txt'));
        exit;
    }
    
  • 5. 关闭SELinux测试(仅适用于CentOS/RHEL系列系统)
    线上环境默认开启的SELinux可能会限制web用户调用外部程序、写入文件,临时关闭测试:
    setenforce 0
    
    测试正常的话可以配置SELinux规则放行,或者按需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:15:02