仅针对PHP8.4系列
整合脚本
创建脚本文件
nano update_imagemagick.sh
粘贴脚本内容:
#!/bin/bash
# =================================================================
# 宝塔面板 PHP 8.4 ImageMagick 自动升级脚本
# 作者:Gemini
# =================================================================
# 遇到错误立即停止执行
set -e
echo "================================================================="
echo " 开始更新 ImageMagick 并编译 PHP 8.4 Imagick 扩展"
echo "================================================================="
# 1. 安装系统依赖
echo -e "\n[1/6] 正在安装编译所需的系统依赖..."
apt-get update -y
apt-get install -y build-essential pkg-config libjpeg-dev libpng-dev libtiff-dev \
libwebp-dev libheif-dev libde265-dev libxml2-dev libfreetype6-dev liblcms2-dev \
liblqr-1-0-dev libltdl-dev
# 2. 编译安装 ImageMagick 7
echo -e "\n[2/6] 正在从官方源下载并编译 ImageMagick 7 最新版..."
cd /usr/local/src
# 清理可能存在的旧文件
rm -rf ImageMagick* wget https://imagemagick.org/archive/ImageMagick.tar.gz
tar -zxvf ImageMagick.tar.gz
# 进入解压后的目录 (使用通配符匹配具体版本号)
cd ImageMagick-7.*
./configure --prefix=/usr/local/imagemagick7 \
--with-modules \
--with-perl=no \
--with-magick-plus-plus=no \
--with-webp=yes \
--with-heic=yes
# 系统库使用多线程编译以加快速度
make -j$(nproc)
make install
# 3. 配置系统环境变量
echo -e "\n[3/6] 正在配置系统库环境..."
echo "/usr/local/imagemagick7/lib" > /etc/ld.so.conf.d/imagemagick7.conf
ldconfig
ln -sf /usr/local/imagemagick7/bin/magick /usr/bin/magick
# 4. 编译安装 PHP 8.4 的 Imagick 扩展
echo -e "\n[4/6] 正在从 PECL 下载并编译 PHP 8.4 的 Imagick 扩展..."
cd /usr/local/src
rm -rf imagick-3.7.0*
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/84/bin/phpize
./configure --with-php-config=/www/server/php/84/bin/php-config --with-imagick=/usr/local/imagemagick7
# 移除 -j 参数,采用单线程编译,防止在 PHP 8.4 下因为资源或兼容性问题卡死
make
make install
# 5. 重启 PHP 8.4 服务
echo -e "\n[5/6] 正在重启宝塔 PHP 8.4 服务..."
# 宝塔面板默认的 PHP-FPM 重启脚本路径
/etc/init.d/php-fpm-84 restart
# 6. 清理与验证
echo -e "\n[6/6] 正在清理临时文件并验证安装结果..."
cd /usr/local/src
rm -rf ImageMagick* imagick-3.7.0*
echo -e "\n================================================================="
echo "安装完成!当前核心版本信息如下:"
echo "================================================================="
/www/server/php/84/bin/php --ri imagick | grep -i -E "imagick module version|Imagick using ImageMagick library version"
echo "================================================================="
保存退出:
按 Ctrl+O 保存,Enter 确认,然后按 Ctrl+X 退出。
赋予执行权限,运行
chmod +x update_imagemagick.sh
./update_imagemagick.sh
分部执行
仅当脚本失败才进行尝试
第一阶段:准备工作与安装依赖
首先,我们需要安装编译所需的库。虽然你已经有一些支持格式,但为了确保 ImageMagick 7 能完美支持 WebP、HEIC 等,我们需要补齐开发头文件。
在终端执行:
apt-get update
apt-get install -y build-essential pkg-config libjpeg-dev libpng-dev libtiff-dev libwebp-dev libheif-dev libde265-dev libxml2-dev libfreetype6-dev liblcms2-dev liblqr-1-0-dev libltdl-dev
第二阶段:编译安装 ImageMagick 7 (系统库)
我们将从官网下载最新的源码进行编译。
- 下载并解压:
cd /usr/local/src
wget https://imagemagick.org/archive/ImageMagick.tar.gz
tar -zxvf ImageMagick.tar.gz
cd ImageMagick-7.*
配置与编译: 我们要把它安装到自定义目录 /usr/local/imagemagick7,避免和系统自带的旧版冲突。
./configure --prefix=/usr/local/imagemagick7 --with-modules --with-perl=no --with-magick-plus-plus=no --with-webp=yes --with-heic=yes
make -j$(nproc)
make install
配置系统路径: 让系统能找到新版本。
echo "/usr/local/imagemagick7/lib" > /etc/ld.so.conf.d/imagemagick7.conf
ldconfig
ln -sf /usr/local/imagemagick7/bin/magick /usr/bin/magick
验证: 执行 magick -version。如果看到 Version: ImageMagick 7.x.x,说明第一步成功了。
第三阶段:重新编译 PHP 8.4 的 Imagick 扩展
由于 ImageMagick 的大版本变了,原有的扩展会失效,我们必须针对新库重新编译 PHP 扩展。
- 下载 Imagick 扩展源码:
cd /usr/local/src
# 下载最新的 imagick 扩展
wget https://pecl.php.net/get/imagick-3.7.0.tgz
tar -zxvf imagick-3.7.0.tgz
cd imagick-3.7.0
针对 PHP 8.4 进行配置: 注意这里必须指向宝塔 PHP 8.4 的 php-config 路径和你刚才安装的 ImageMagick 7 路径。
/www/server/php/84/bin/phpize
./configure --with-php-config=/www/server/php/84/bin/php-config --with-imagick=/usr/local/imagemagick7
make -j$(nproc)
make install
安装完成提示: 安装完成后,终端会显示一行:Installing shared extensions: /www/server/php/84/lib/php/extensions/no-debug-non-zts-xxxxxxxx/。这说明 .so 文件已经生成。
第四阶段:在宝塔面板中激活
- 检查配置: 通常宝塔已经在
php.ini 中写好了 extension=imagick.so。因为我们是在原有的 PHP 目录上覆盖安装的,所以通常不需要修改配置文件。
- 重启服务: 在宝塔面板后台,找到 软件商店 -> 已安装 -> PHP-8.4,点击 设置 -> 服务 -> 重启。
- 最终验证: 再次运行你之前的检查命令:
/www/server/php/84/bin/php --ri imagick
完成后的检查清单
如果你看到以下输出,说明更新完美完成:
- imagick module version => 3.7.0 (或更高)
- Imagick using ImageMagick library version => ImageMagick 7.x.x
如果成功
清理源码包: 编译已经完成,源码包不再需要,可以删除以节省空间
rm -rf /usr/local/src/ImageMagick*
rm -rf /usr/local/src/imagick*
#Imagick #php #宝塔