对于菜鸟来说php7.4X真是一个坑接着一个坑,手动安装php7是本着学习的态度,要感觉遇到问题解决问题,没有问题制造问题的精神来面对PHP。下面详细说一下在PHP7.4下面如何正确安装GD扩展的全部支持。

如图上面的,JPEG和FreeType一个都不能少。由于手动安装PHP7.4的时候,网上的安装介绍里面的坑太多,导致没有正确安装上GD库的全部支持。接下来手动完成GD的安装。

首先安装libzip,如果已经安装libzip的先卸载一下yum的安装以免冲突。

1
yum remove -y libzip

下载libzip的软件包,然后编译安装,安装libzip时回车执行即可,什么都不用配置,使用默认即可。

1
2
3
4
5
6
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make
make install

手动安装GD,下载GD软件包。

1
2
3
4
5
6
7
8
wget https://github.com/libgd/libgd/releases/download/gd-2.2.3/libgd-2.2.3.tar.gz
tar -xzvf libgd-2.2.3.tar.gz
cd libgd-2.2.3
./configure --enable-shared
make
make install
make clean
make distclean

下载zlib,注意不要和libzip搞混,这是不同的软件包。

1
2
3
4
5
6
wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib --enable-shared
make
make install

下载freetype的软件包,定义一下freetype的软件安装目录,建议安装在/usr/local/下面

1
2
3
4
5
6
wget https://download.savannah.gnu.org/releases/freetype/freetype-2.10.1.tar.gz
tar -xzvf freetype-2.10.1.tar.gz
cd freetype-2.10.1
./configure --prefix=/usr/local/freetype --enable-shared
make
make install

下载libpng的软件包,同样安装在/usr/local/下面

1
2
3
4
5
6
wget http://jaist.dl.sourceforge.net/project/libpng/libpng16/1.6.31/libpng-1.6.31.tar.gz
tar -xzvf libpng-1.6.31.tar.gz
cd libpng-1.6.31
./configure --prefix=/usr/local/libpng --enable-shared
make
make install

下载jpeg的软件包,最新版本是V9D,也可以降到稳定版本。

1
2
3
4
5
6
wget http://www.ijg.org/files/jpegsrc.v9d.tar.gz
tar -xzvf jpegsrc.v9d.tar.gz
cd jpeg-9d
./configure --prefix=/usr/local/libjpeg --enable-shared
make
make install

注意:安装软件包时候一定要在configure后面加一个--enable-shared参数。用来生成lib或lib64共享库里面的.so文件。
好了以上支持的软件包都安装完成了,万事俱备,只欠东风。下面在PHP中安装GD扩展。
首先进入你服务器上面的php软件包的安装目录,在目录下面进入/ext//目录下。注意是PHP7.4x的安装文件的目录。不是已经安装好的PHP目录。
例如:cd php-7.4.3/ext/
在目录下面执行命令,清除一下残留的make文件。然后用phpize重新生成一下configure,如果设置PHP变量的可以直接使用phpize命令,如果没有设置过变量的要输入命令路径执行命令。

1
2
3
4
5
6
7
8
9
10
11
make clean
/usr/local/php/bin/phpize

./configure \
---enable-gd \
--with-php-config=/usr/local/php/bin/php-config \
--with-jpeg=/usr/local/libjpeg \
--with-freetype=/usr/local/freetype \

make
make install

安装时为什么不加入--with-png-dir和--with-zlib-dir的安装目录呢?
PHP7.4x对于目录方面有一些更改,默认取消了--with-png-dir和--with-zlib-dir的自定义,PHP7.4x下的GD已经自动绑定了libpng和zlib。
当然如果你的GD扩展里面如果漏装了一个,例如缺少JPEG或者FreeType的时候,在GD目录下安装,也要执行全部安装命令。不能单独安装jpeg或者freetype。那样的话会安装上了jpeg而缺少freetype,又或者安装上了freetype又缺少了jpeg。反正就是执行全部安装就可以了。
php7目录变更可以参考:PHP7.4x在文件夹目录上的一些变更,升级PHP7.4x必看
make install过后,系统会自动生成一个GD.SO文件在下面的目录。
例如屏幕会提示一个这样的目录。
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/
使用一下ldd命令查看一下gd.so下面有没有安装完整。

1
ldd /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd.so


看来GD已经安装完毕了,如果在PHP中支持GD扩展呢?
将下面内容复制到系统PHP目录里php.ini文件中,重启PHP服务就可以了。

1
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd.so

重启PHP服务后,打开PHP的探针页面,查看一下GD选项。恭喜你,已经成功安装了GD库!

订阅
提醒
guest
0 评论
内联反馈
查看所有评论