class not found 本质是自动加载失败,主因在命名空间错误(应为 ffmpegfmpeg)、psr-4 映射缺失(需检查 autoload_psr4.php)、或 vendor/autoload.php 未引入;须用 composer require php-ffmpeg/php-ffmpeg 安装并验证。

PHP 使用 php-ffmpeg 库时报 Class not found,本质不是库没装,而是自动加载失败——类定义存在,但 PHP 找不到它该从哪加载。核心问题集中在命名空间、PSR-4 映射、加载时机三处。下面分场景直击关键点:
确认是否真通过 Composer 安装
php-ffmpeg 的官方包是 php-ffmpeg/php-ffmpeg(注意不是 ffmpeg/ffmpeg 或其他变体)。运行以下命令验证:
-
composer show php-ffmpeg/php-ffmpeg—— 应显示版本信息;若提示“Package not found”,说明未正确安装 - 若只是把源码文件夹拖进
vendor/或extend/,Composer 不会识别,必须用:composer require php-ffmpeg/php-ffmpeg - 安装后检查
vendor/php-ffmpeg/php-ffmpeg/src/是否存在,且含FFMpeg/目录结构
检查命名空间与 use 语句是否匹配
该库主类为 FFMpegFFMpeg,不是 PHPFFMpeg 或 FFmpeg。常见错误写法:
- ❌
use PHPFFMpegFFMpeg;→ 命名空间错误 - ❌
use FFMpeg;→ 缺少子命名空间 - ✅ 正确写法:
use FFMpegFFMpeg;+use FFMpegFormatVideoX264;等按需引入 - 确保
vendor/autoload.php已在入口文件中引入(如public/index.php)
验证 autoload_psr4.php 是否注册成功
Composer 安装后应自动生成映射。打开 vendor/composer/autoload_psr4.php,搜索 'FFMpeg\' =>,应看到类似:
'FFMpeg\' => array($vendorDir . '/php-ffmpeg/php-ffmpeg/src')
若无此行:
- 执行
composer dump-autoload -o强制刷新 - 检查
vendor/php-ffmpeg/php-ffmpeg/composer.json中是否有"autoload": {"psr-4": {"FFMpeg\": "src/"}}—— 官方包自带,一般无需修改 - 若项目禁用了 vendor 自动加载(如某些 ThinkPHP 自定义 Loader),需手动确保
vendor/autoload.php在框架初始化前已执行
排除框架级干扰(尤其 ThinkPHP/Laravel)
部分框架会覆盖或绕过 Composer autoloader:
- ThinkPHP:确认没在
app/common.php或public/index.php中调用Loader::addNamespace()冲突 FFMpeg 命名空间 - Laravel:检查
config/app.php的providers是否误加了第三方服务提供者导致提前加载失败 - 调试技巧:在报错前加一行
var_dump(class_exists('FFMpeg\FFMpeg'));,返回false即加载未生效,true则可能是运行时依赖缺失(如 ffmpeg 二进制未安装)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











