返回上一级

1Panel面板修改PHP构建扩展,GD扩展增加avif支持

通过微调 1Panel面板PHP构建文件,可以为扩展编译增加更多的支持。

省去自己构建麻烦

修改

1Panel的PHP构建目录在 /opt/1panel/runtime/php/ 目录下。

以我的 1Panel社区版:v1.10.5-lts PHP:8.2.15 举例。

进入以下目录:

1cd /opt/1panel/runtime/php/PHP82_15/php/extensions

修改目录下的的 install.sh 文件。

搜索 Install gd ,找到判断GD扩展那一行。

我的在228行

 1if [[ -z "${EXTENSIONS##*,gd,*}" ]]; then
 2    echo "---------- Install gd ----------"
 3    isPhpVersionGreaterOrEqual 8 0
 4
 5    if [[ "$?" = "1" ]]; then
 6        # "--with-xxx-dir" was removed from php 7.4,
 7        # issue: https://github.com/docker-library/php/issues/912
 8        options="--with-freetype --with-jpeg --with-webp"
 9    else
10        options="--with-gd --with-freetype-dir=/usr/include/ --with-png-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/"
11    fi
12
13    apk add --no-cache \
14        freetype \
15        freetype-dev \
16        libpng \
17        libpng-dev \
18        libjpeg-turbo \
19        libjpeg-turbo-dev \
20	libwebp-dev \
21    && docker-php-ext-configure gd ${options} \
22    && docker-php-ext-install ${MC} gd \
23    && apk del \
24        freetype-dev \
25        libpng-dev \
26        libjpeg-turbo-dev
27fi

修改最上面的 options。

增加 --with-avif ,使用AVIF支持进行编译

1// old
2options="--with-freetype --with-jpeg --with-webp"
3
4// new
5options="--with-freetype --with-jpeg --with-webp --with-avif"

修改 apk add –no-cache 内部一行

在 freetype 和 libwebp-dev 中间添加 libavif-dev

GD 扩展依赖于 libavif 软件包,以提供底层 AVIF 解码。

 1    apk add --no-cache \
 2        freetype \
 3        freetype-dev \
 4        libpng \
 5        libpng-dev \
 6        libavif-dev \
 7        libjpeg-turbo \
 8        libjpeg-turbo-dev \
 9	libwebp-dev \
10    && docker-php-ext-configure gd ${options} \
11    && docker-php-ext-install ${MC} gd \
12    && apk del \
13        freetype-dev \
14        libpng-dev \
15        libjpeg-turbo-dev

在 1Panel面板 运行环境 重建PHP应用

备选方案

理论上修改了构建命令,docker的缓存会失效,如果依然秒编译完成可以尝试手动清理全部缓存

https://docs.docker.com/reference/cli/docker/builder/prune/

1docker builder prune -a
2y

如果依然不行可能新版构建目录换了地方

验证

完成后可以在 phpinfo(); 查看GD扩展多出了 AVIF 支持

1AVIF Support	enabled