Skip to main content

安装GD库

--

安装GD库

程序报了Call to undefined function Intervention\Image\Gd\imagecreatefromjpeg()这个错误, 百度说 php 安装GD少了jpeg,我在linux上使用php --ri gd发现gd库确实没有jpeg。与是按照下面[安装教程]的方法试了半天。都不行。

php.ini里面不开启GD,GD扩展也可以用。这是咋搞滴。

于是重新编译整个PHP不把就不把gd编译进去。
然后再用下面的方法生成gd.so 再在php.ini里面配置进去。再重启php-fpm,nginx再php --ri gd就发现jpeg有了。

问题原因: PHP源码编译安装的时候把GD库编译进去了,所以再生成的gd.so是不起作用的。需要PHP重新编译不把GD编译进去,然后引入生成的gd.so。


安装教程1

当前使用的安装包版本:

freetype-2.4.0.tar.bz2

jpegsrc.v9.tar.gz

libpng-1.6.28.tar.gz

1、安装freetype

tar jxvf freetype-2.4.0.tar.bz2
cd freetype-2.4.0
./configure --prefix=/usr/local/freetype

make && make install

2、安装jpegsrc

tar zxvf jpegsrc.v9.tar.gz
cd jpeg-9
./configure --prefix=/usr/local/jpeg && make && make install
mkdir -p /usr/local/jpeg/include \
mkdir -p /usr/local/jpeg/lib \
mkdir -p /usr/local/jpeg/bin \
mkdir -p /usr/local/jpeg/man/man1

3、安装libpng

tar zxvf libpng-1.6.28.tar.gz
cd libpng-1.6.28
./configure --prefix=/usr/local/libpng

make && make install

4、进入PHP安装包里面的ext文件夹,找到gd扩展

cd /home/local/php-5.6.25/ext/gd

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype

如果出现configure: error: Problem with libpng.(a|so) or libz.(a|so). Please check config.log for more information

换个版本的libpng重新安装就好

make && make install

cp /usr/local/php/lib/php/extensions/no-debug-zts-20131226/gd.so /usr/local/php/extension/gd.so

vim /usr/local/php/etc/php.ini 添加:extension=gd.so

重启服务器,/usr/local/php/bin/php -m 就能看到了


安装教程2

做项目上传图片的时候,上传png的没有任何问题,已一上传jpg的就报错这个错误

Call to undefined function Intervention\Image\Gd\imagecreatefromjpeg()

看样子是gd库的jpeg没找到的样子。

看一下服务器配置

果然缺少jpeg 和 freetype

这才回想起来,安装服务器的时候确实没装jpeg

想装上freetype jpeg 必须重新编译gd库

gd依赖包下载地址:https://download.csdn.net/download/u014740338/10441203

1、安装freetype

tar zxvf  freetype-2.4.0.tar.gz
cd freetype-2.4.0
./configure --prefix=/usr/local/freetype
make && make install

2、安装jpegsrc

tar zxvf jpegsrc.v9.tar.gz
cd jpeg-9
./configure --prefix=/usr/local/jpeg
make && make install

3、安装zlib

tar zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/zlib
make && make install

4、安装安装libpng

tar zxvf libpng-1.6.16.tar.gz
cd libpng-1.6.16
./configure --prefix=/usr/local/libpng
make && make install

5、进入PHP安装包里面的ext文件夹,找到gd扩展

我的php安装源码的位置:/php-7.0.2

扩展文件的存放地址:/php-7.0.2/ext

cd /php-7.0.2/ext/gd

#清除上次make产生的文件 make clean

#我的编译文件产生的文件夹路径 cd /usr/local/php/lib/php/extension/no-debug-zts-20151012

#删除上次产生的gd.so rm -rf gd.so 开始重新编译gd

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype

#这次增加了 with-jpeg-dir with-png-dir with-freetype-dir

make && make install

产生了新的gd.so

因为我的是重新编译,所以php.ini中已经有了相关配置,不需要再次添加

如果是第一次安装的话:

#你的php配置文件

vim /etc/php.ini

#增加这条

extension = gd.so

直接重启服务器

service httpd restart