php-ffmpeg仅是PHP封装库,不自带ffmpeg二进制,必须单独安装并配置ffmpeg/ffprobe路径;Composer安装需用正确包名php-ffmpeg/php-ffmpeg,类加载失败多因命名错误或自动加载未生效,Web环境下还需检查exec函数是否被禁用及权限问题。

PHP 项目里用 php-ffmpeg/php-ffmpeg,不是装个 Composer 包就完事——它根本不带 ffmpeg 二进制,只负责调用系统命令。真正卡住你的,90% 是 ffmpeg 或 ffprobe 找不到、版本太旧、或权限不对。
composer require php-ffmpeg/php-ffmpeg 之后报 Class not found?
这是最常见误判:以为扩展没装上,其实是包名写错或自动加载失效。
- 确认命令是
composer require php-ffmpeg/php-ffmpeg(注意斜杠,不是短横线或下划线) - 检查
vendor/autoload.php是否已引入;Laravel 项目通常不用手动 require,但非 Laravel 环境必须显式require 'vendor/autoload.php'; - 类名必须全小写加反斜杠:
FFMpeg\FFMpeg::create(),不能写成FFmpeg或Ffmpeg - 如果用了
composer install --no-autoloader或禁用了优化,补一句composer dump-autoload
Windows 下 ffmpeg -version 能运行,但 PHP 里 still can't find ffprobe
因为 PHP 进程不继承你 CMD 的 PATH,尤其是通过 Web 服务器(如 Apache/Nginx + PHP-FPM)运行时,PATH 往往被重置为空。
- 别依赖环境变量,直接在代码里硬编码路径:
'ffprobe.binaries' => 'C:/ffmpeg/bin/ffprobe.exe' - 确保该路径下同时存在
ffmpeg.exe和ffprobe.exe(官网 zip 包解压后 bin/ 目录里就有) - 检查 PHP 进程用户是否有读取该目录的权限(IIS 或 XAMPP 默认可能拒绝访问 Program Files)
- 用
file_exists('C:/ffmpeg/bin/ffprobe.exe')和is_executable()在代码里验证,比猜更可靠
为什么换国内镜像后 composer require 还是慢甚至失败?
镜像只加速 PHP 包下载,不影响系统级 ffmpeg 安装——很多人混淆了这两层依赖。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
立即学习“PHP免费学习笔记(深入)”;
- Composer 镜像生效前提是:你已全局配置,例如运行
composer config -g repo.packagist https://packagist.phpcomposer.com(注意,2026 年主流已切到https://mirrors.aliyun.com/composer/) - 若仍慢,可能是 DNS 或本地 hosts 被污染,临时加一行
114.114.114.114 packagist.org测试 - 镜像不解决
php-ffmpeg本身对ffmpeg的强依赖——即使包秒装完,$ffmpeg->open()仍会因 ffprobe 不可用而抛出Unable to load FFProbe
laravel 项目里 exec() 被禁用导致 ffmpeg 调用静默失败?
这不是 php-ffmpeg 的 bug,而是 PHP 安全策略限制。Web 环境默认禁用 shell 函数,错误不会报在页面上,只会记在 error_log 里。
- 查
php.ini中disable_functions是否包含exec,shell_exec,system,passthru;若有,删掉再重启 PHP 服务 - 更安全的做法是改用
proc_open()方式调用(php-ffmpeg 默认就是这么做的),但前提是 ffmpeg 二进制路径可执行且无权限拦截 - Linux 下注意 SELinux 或 AppArmor 可能阻止子进程启动,临时用
setenforce 0测试是否为此原因
真正耗时间的从来不是 Composer 下载那几十秒,而是 ffmpeg 二进制路径没对齐、ffprobe 权限没放开、或者 exec 被锁死却不去看 error_log ——这些地方一卡就是半天。


















