Intervention Image 不能直接通过 Composer 安装到纯 PHP 项目——需先启用 ext-gd 或 ext-imagick(≥3.4.0),再按 PHP 版本选择对应包版本(如 PHP 8.0+ 用 ^2.7),实例化时必须显式指定 driver(gd/imagick),且修改 php.ini 后须重启服务。

Intervention Image 不能直接通过 Composer 安装到 Laravel 以外的纯 PHP 项目里——它依赖 ext-gd 或 ext-imagick 扩展,且 Composer 只负责下载代码,不帮你装系统级依赖。
确认 GD 或 Imagick 扩展已启用
Intervention Image 底层靠 PHP 图形扩展干活,没它们,Intervention\Image\ImageManager 实例一创建就报 Class 'GdImage' not found 或类似致命错误。
- 运行
php -m | grep -i gd(Linux/macOS)或查看phpinfo()页面确认gd是否在已启用模块中 - 如果用 Imagick,检查
imagick模块是否加载,且版本 ≥ 3.4.0(旧版不支持 WebP 等格式) - Windows 用户常见坑:php.ini 里
extension=gd前有分号、路径不对、或用了线程安全(TS)版 PHP 却配了非 TS 扩展
Composer require 的正确写法和版本选择
官方包名是 intervention/image,但不同 PHP 版本要对应不同大版本,乱选会触发依赖冲突或方法不存在。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- PHP 8.0+:用
composer require intervention/image:^2.7(最新稳定 v2) - PHP 7.4:建议锁死
composer require intervention/image:2.6.1,避免 v2.7 引入的 PHP 8-only 类型声明报错 - 别装
intervention/imagecache——那是已废弃的旧缓存插件,和当前intervention/image不兼容 - 如果项目已有
guzzlehttp/guzzle,注意 v2.7 默认要求 Guzzle 7,若你用的是 Guzzle 6,得手动加"guzzlehttp/guzzle": "^6.5"到require并运行composer update
实例化时传参必须匹配已安装扩展
Intervention\Image\ImageManager 构造函数的 driver 参数不是可有可无的开关,它强制绑定底层实现。填错就抛异常,不试运行根本看不出问题。
- 只装了 GD:用
new ImageManager(['driver' => 'gd']) - 只装了 Imagick:用
new ImageManager(['driver' => 'imagick']) - 两个都装了?默认走 GD,想切 Imagick 必须显式指定,否则
resize()处理透明 PNG 时可能丢 alpha 通道(GD 的老毛病) - 别信某些博客写的
['driver' => 'auto']——这个选项在 v2 中根本不存在,会直接导致DriverNotFoundException
最常被跳过的一步:改完 php.ini 后忘了重启 PHP-FPM 或 Apache,或者 CLI 和 Web 使用的不是同一个 php.ini。跑 php -i | grep 'Loaded Configuration File' 对比下实际加载的配置路径,比反复重装 Composer 包管用。

















