对于菜鸟来说php7.4X真是一个坑接着一个坑,手动安装php7是本着学习的态度,要感觉遇到问题解决问题,没有问题制造问题的精神来面对PHP。下面详细说一下在PHP7.4下面如何正确安装GD扩展的全部支持。
如图上面的,JPEG和FreeType一个都不能少。由于手动安装PHP7.4的时候,网上的安装介绍里面的坑太多,导致没有正确安装上GD库的全部支持。接下来手动完成GD的安装。
首先安装libzip,如果已经安装libzip的先卸载一下yum的安装以免冲突。
yum remove -y libzip
下载libzip的软件包,然后编译安装,安装libzip时回车执行即可,什么都不用配置,使用默认即可。
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软件包。
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搞混,这是不同的软件包。
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/下面
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/下面
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,也可以降到稳定版本。
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/gd/目录下。注意是PHP7.4x的安装文件的目录。不是已经安装好的PHP目录。
例如:cd php-7.4.3/ext/gd
在目录下面执行命令,清除一下残留的make文件。然后用phpize重新生成一下configure,如果设置PHP变量的可以直接使用phpize命令,如果没有设置过变量的要输入命令路径执行命令。
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下面有没有安装完整。
ldd /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd.so
看来GD已经安装完毕了,如果在PHP中支持GD扩展呢?
将下面内容复制到系统PHP目录里php.ini文件中,重启PHP服务就可以了。
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd.so
重启PHP服务后,打开PHP的探针页面,查看一下GD选项。恭喜你,已经成功安装了GD库!