在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