Ubuntu下PHP扩展目录配置问题:Imagick扩展无法加载
解决PHP无法找到Imagick扩展的路径匹配问题
你遇到的核心问题是PHP的扩展查找目录(extension_dir)和实际安装Imagick的目录不匹配——你的imagick.so存放在/usr/lib/php/20180731/,但PHP CLI默认去/usr/lib/php/20170718/查找,自然找不到文件。下面给你几个可行的解决办法,按推荐优先级排序:
1. 修改PHP的extension_dir配置(推荐)
这个方法从根源解决路径不匹配问题,长期维护更省心:
- 先确认当前PHP CLI的扩展目录设置,执行命令:
输出应该会显示它当前默认查找的是php -i | grep extension_dir/usr/lib/php/20170718/。 - 找到PHP CLI和FPM对应的
php.ini文件(你之前已经修改过这两个文件,应该清楚位置),定位到extension_dir行:注意:如果这行前面有分号
;,说明处于注释状态,需要去掉分号启用配置。
将其修改为你的Imagick扩展所在目录:extension_dir = "/usr/lib/php/20180731/" - 保存修改后,重启PHP-FPM和Nginx:
sudo systemctl restart php-fpm sudo systemctl restart nginx - 最后验证扩展是否加载成功:
如果输出了Imagick相关的配置信息,就说明加载成功了。php -i | grep imagick
2. 手动复制扩展文件到默认查找目录(临时快速方案)
如果你暂时不想修改配置文件,可以直接把imagick.so复制到PHP默认查找的目录:
sudo cp /usr/lib/php/20180731/imagick.so /usr/lib/php/20170718/
复制完成后重启PHP-FPM,再测试扩展是否加载。不过这个方法的缺点是:后续如果PHP版本更新、扩展重新编译,你都需要再次复制文件,长期维护比较麻烦,只建议作为临时应急方案。
3. 检查是否存在多PHP版本冲突
还有一种可能是你的系统里同时安装了多个PHP版本——比如你编译安装的是PHP 7.3(对应扩展目录20180731),但系统默认的CLI是PHP 7.2(对应20170718):
- 检查CLI的PHP版本:
php -v - 检查FPM的PHP版本:
php-fpm -v
如果两个版本不一致,要么统一升级/降级到同一个PHP版本,要么给对应版本重新安装Imagick扩展。
内容的提问来源于stack exchange,提问作者superfive33
相关产品推荐
相关产品推荐

