上一个教程中我们已经安装了php8,但是使用后发现 GD 拓展忘记加上去了。
本来在php8编译的时候,在配置中加上这句:--enable-gd
就可以了,更多细节可以看官方说明:GD
但现在需要手动加上这个拓展,就会麻烦一些了。
传统做法是自己编译安装需要的依赖,然后安装 GD 时,配置依赖包的路径来实现。
但是现在其实可以直接使用系统的包管理器来安装依赖项,这里两种方式都会提供!
需要了解的小知识
这里我们需要知道 GD 扩展会依赖 zlib、freetype、libpng、libjpeg 这几个库,下面分别是它们的介绍:
- zlib: zlib 是一个用于数据压缩和解压缩的开源库,GD 扩展使用 zlib 来支持 PNG 图像的压缩和解压缩。PNG 是一种无损压缩的图像格式,使用 zlib 压缩算法来压缩图像数据。
- freetype: FreeType 是一个开源的字体渲染引擎,它允许 GD 扩展支持从 TrueType 和 OpenType 字体文件中加载字体,并在图像上绘制文本。这意味着你可以在图像上添加文本,并选择不同的字体、大小和样式。
- libpng: libpng 是一个用于处理 PNG 图像格式的开源库,GD 扩展使用 libpng 来读取和写入 PNG 图像文件。libpng 提供了对 PNG 图像的解码和编码功能,使 GD 能够处理 PNG 图像。
- 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/
下载地址在这里:
获取到地址后,分别执行:
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