在Wordpress里优化图片储存的时候,我们往往会选取Avif这种格式,因为它比未经优化的JPG或者PNG要小75%左右,比同等画质和分辨率的Webp格式还要小一半的样子,因此它就成为了我们首选的图片压缩最优解,也成为了提升站点加载速度和优化Google core web vitals加载速度跑分的一个利器。
好是好,但是往往很多人在尝试上传avif的时候遇到各种问题,比如提示你avif文件格式不支持,抑或是尝试resize(调整)avif图片尺寸时失败。极客现在的环境是CentOS 7.9的Linux系统、宝塔最新版、PHP8.3,Wordpress也是4.9.x版本,也遇到了avif不能上传的问题。我对此进行了深入的研究,最终发现其实还是因为Centos 7.x版本已经停更,很多repo库以及GCC等组件太旧导致你直接在宝塔里安装imagemagick的PHP扩展库其实是没用的,因为它不能支持HEIC和AVIF的调用。
以下是我整理的最终能够解决在Centos7下的宝塔里搭建的Wordpress能够使用Avif的整个流程:
目录
隐藏
🧩 一、整体架构(先理解)
libaom / libavif
↓
libheif
↓
ImageMagick(支持 AVIF)
↓
imagick(PHP扩展)
↓
WordPress(用 Imagick 处理图片)
👉 任意一层错 → AVIF 不工作
🛠️ 二、安装依赖(系统层)
yum groupinstall "Development Tools" -y
yum install -y cmake3 git wget libjpeg-devel libpng-devel libtiff-devel libwebp-devel freetype-devel
🧱 三、安装 libaom(AV1编码)
cd /usr/local/src
git clone https://aomedia.googlesource.com/aom
cd aom
mkdir build && cd build
cmake3 .. \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DBUILD_SHARED_LIBS=1 \
-DENABLE_NASM=on
make -j$(nproc)
make install
🧱 四、安装 libavif
cd /usr/local/src
git clone https://github.com/AOMediaCodec/libavif.git
cd libavif
mkdir build && cd build
cmake3 .. \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DAVIF_CODEC_AOM=ON
make -j$(nproc)
make install
🧱 五、安装 libheif(关键)
cd /usr/local/src
git clone https://github.com/strukturag/libheif.git
cd libheif
mkdir build && cd build
cmake3 .. \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DWITH_AOM=ON \
-DWITH_AVIF=ON
make -j$(nproc)
make install
🧠 六、配置动态库路径(必须)
echo "/usr/local/lib64" > /etc/ld.so.conf.d/local.conf
ldconfig
🧱 七、安装 ImageMagick(带 AVIF)
cd /usr/local/src
wget https://github.com/ImageMagick/ImageMagick/archive/refs/tags/7.1.1-47.tar.gz
tar zxvf 7.1.1-47.tar.gz
cd ImageMagick-7.1.1-47
PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig" \
./configure \
--prefix=/usr/local \
--with-heic=yes
make -j$(nproc)
make install
ldconfig
✅ 验证 AVIF 支持
magick -list format | grep -i avif
👉 必须出现:
AVIF rw+
🧱 八、安装 imagick(必须用稳定版)
❗不要用 git master(会出现 @PACKAGE_VERSION@)
cd /usr/local/src
wget https://pecl.php.net/get/imagick-3.7.0.tgz
tar zxvf imagick-3.7.0.tgz
cd imagick-3.7.0
/www/server/php/83/bin/phpize
PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig \
./configure \
--with-php-config=/www/server/php/83/bin/php-config
make -j$(nproc)
make install
🧠 九、启用 imagick(宝塔关键点)
echo "extension=imagick.so" >> /www/server/php/83/etc/php.ini
echo "extension=imagick.so" >> /www/server/php/83/etc/php-cli.ini
🔁 重启
bt restart
✅ 十、验证
CLI:
/www/server/php/83/bin/php -m | grep imagick
AVIF:
/www/server/php/83/bin/php -r "print_r(Imagick::queryFormats());" | grep -i avif
🌐 十一、WordPress 验证
后台 → 工具 → 站点健康 → 媒体处理
👉 必须看到:
Active editor: WP_Image_Editor_Imagick
Imagick version: 3.7.0
❗常见坑(你刚全部踩过)
🚨 1. WordPress 用 GD
原因:imagick 未启用
解决:php.ini 加 extension
🚨 2. imagick version = @PACKAGE_VERSION@
原因:用 git 版本
解决:用 pecl 3.7.0
🚨 3. AVIF 不生效
原因:ImageMagick 没链接 libheif
解决:重新编译 + PKG_CONFIG_PATH
🚨 4. CLI 可以,网站不行
原因:php-cli.ini ≠ php.ini
🚨 5. imagick 加载失败
原因:/usr/local/lib64 没加入 ldconfig
🎯 十二、推荐生产方案(重要)
👉 不建议直接上传 AVIF
✅ 最优方案:
上传 JPG
↓
自动生成 AVIF + WebP
↓
前端按浏览器返回
👉 好处:
- SEO 更稳定
- 兼容 Safari / 老浏览器
- 图片体积减少 30~60%
🧠 最终总结
你这套流程的核心不是“安装 AVIF”
而是:
👉 让 WordPress 真正使用 Imagick + AVIF
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。



