PHP8 中手动安装 GD 拓展库的方法(使用包管理器超简单)

2024年5月8日服务端开发评论38,150字数 2619阅读8分43秒阅读模式

Ethan_2024-05-08_13-46-17

上一个教程中我们已经安装了php8,但是使用后发现 GD 拓展忘记加上去了。

本来在php8编译的时候,在配置中加上这句:--enable-gd就可以了,更多细节可以看官方说明:GD

但现在需要手动加上这个拓展,就会麻烦一些了。

传统做法是自己编译安装需要的依赖,然后安装 GD 时,配置依赖包的路径来实现。

但是现在其实可以直接使用系统的包管理器来安装依赖项,这里两种方式都会提供!

需要了解的小知识

这里我们需要知道 GD 扩展会依赖 zlib、freetype、libpng、libjpeg 这几个库,下面分别是它们的介绍:

  1. zlib: zlib 是一个用于数据压缩和解压缩的开源库,GD 扩展使用 zlib 来支持 PNG 图像的压缩和解压缩。PNG 是一种无损压缩的图像格式,使用 zlib 压缩算法来压缩图像数据。
  2. freetype: FreeType 是一个开源的字体渲染引擎,它允许 GD 扩展支持从 TrueType 和 OpenType 字体文件中加载字体,并在图像上绘制文本。这意味着你可以在图像上添加文本,并选择不同的字体、大小和样式。
  3. libpng: libpng 是一个用于处理 PNG 图像格式的开源库,GD 扩展使用 libpng 来读取和写入 PNG 图像文件。libpng 提供了对 PNG 图像的解码和编码功能,使 GD 能够处理 PNG 图像。
  4. libjpeg: libjpeg 是一个用于处理 JPEG 图像格式的开源库,GD 扩展使用 libjpeg 来读取和写入 JPEG 图像文件。libjpeg 提供了对 JPEG 图像的解码和编码功能,使 GD 能够处理 JPEG 图像。

所以我们必须要先安装这些依赖后,才可以编译安装 GD 扩展。

安装后只需要编译下 GD 就可以使用了。

方法一、包管理安装依赖

我这里使用的 Centos 系统,其它 Linux 系统应该操作都是类似的。

首先分别安装依赖:

yum install libjpeg-dev libpng-dev libfreetype6-dev zlib1g-dev

然后进入 PHP 的源码包下的 ext 文件夹,并编译安装 GD,分别执行下面命令:

(目录请修改为自己的路径)

cd /www/download/php-8.2.18/ext/gd
/www/server/php/82/bin/phpize 
./configure --with-php-config=/www/server/php/82/bin/php-config
make && make install

没有出错的话,编译器会生成 gd.so 文件,放到了 PHP 的拓展目录。

可以通过下面命令查看 PHP 的扩展目录(非必需,可以跳过)

php -i | grep extension_dir

最后修改下 PHP 的配置文件,加上扩展的配置即可:

vim /www/server/php/82/etc/php.ini
# 添加
extension=gd.so

重启下 php-fpm 即可生效:

sytemctl restart php-fpm-82

方法二、编译安装依赖

1.

编译安装 zlib

官方项目地址:https://www.zlib.net/

下载地址在这里:

Ethan_2024-05-08_13-34-04

获取到地址后,分别执行:

wget https://www.zlib.net/zlib-1.3.1.tar.gz
tar -xzvf zlib-1.3.1.tar.gz 
cd zlib-1.3.1
./configure --prefix=/usr/local/lib/zlib
make && make install
cd ../

2.

编译安装 freetype

官方项目下载地址:https://sourceforge.net/projects/freetype/files/

获取到地址后,分别执行:

wget https://download.savannah.gnu.org/releases/freetype/freetype-2.9.tar.gz
tar -xzvf freetype-2.9.tar.gz 
cd freetype-2.9
./configure --prefix=/usr/local/lib/freetype
make && make install
cd ../

3.

编译安装 libpng

官方项目地址:http://www.libpng.org/pub/png/libpng.html

获取到地址后,分别执行:

wget https://nchc.dl.sourceforge.net/project/libpng/libpng16/1.6.43/libpng-1.6.43.tar.gz
tar -xzvf  libpng-1.6.43.tar.gz 
cd libpng-1.6.43
./configure --prefix=/usr/local/lib/libpng
make && make install
cd ../

4.

编译安装 libjpeg

官方项目下载地址:https://www.ijg.org/files/

获取到地址后,分别执行:

wget https://www.ijg.org/files/jpegsrc.v9f.tar.gz
tar -xzvf jpegsrc.v9f.tar.gz
cd jpeg-9f
./configure --prefix=/usr/local/lib/libjpeg --enable-shared
make && make install
cd ../

5.

编译 GD

用官方的源码包,进入 PHP 的源码包下的 ext 文件夹,并编译安装 GD,分别执行下面命令:

cd /www/download/php-8.2.18/ext/gd
/www/server/php/82/bin/phpize 
./configure --with-php-config=/www/server/php/82/bin/php-config --with-jpeg-dir=/usr/local/lib/libjpeg --with-png-dir=/usr/local/lib/libpng --with-freetype-dir=/usr/local/lib/freetype --with-zlib-dir=/usr/local/lib/zlib
make && make install

6.

修改 PHP 配置,添加扩展

修改下 PHP 的配置文件,加上扩展的配置即可:

vim /www/server/php/82/etc/php.ini
# 添加
extension=gd.so

重启下 php-fpm 即可生效:

sytemctl restart php-fpm-82

匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定