PHP安装GD依赖

 

 在这里必须记录一下我gd的安装过程,首先说明一下,PHP我只是一个小白白,由于搭建个人博客的需要缩略图,所有需要PHP安装gd,PHP安装的时候默认是没有安装gd的,经过了周末两天的挣扎,终于把gd扩展按上了,超级开心,博客可以接着往下弄了。

    废话不多少,下面展示我安装的过程(历尽艰难啊~~~):

    由于gd依赖了一些扩展包,所以需要先安装依赖包,依赖包如下:

freetype-2.4.0.tar.bz2
jpegsrc.v9.tar.gz
zlib-1.2.8.tar.gz
libpng-1.6.16.tar.gz
    说明:PHP我使用的是5.6.31版本的,这些依赖包的版本是我亲测过的,安装的时候最好使用这些依赖包,zlib是libpng的依赖包,zlib和libpng的版本必须匹配上才能安装libpng成功,最新的zlib-1.2.11无法与libpng匹配,安装的时候要注意。

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

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、安装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扩展

cd /usr/local/php-5.6.31/ext/        (进入自己的PHP安装包)
/usr/local/php/bin/phpize        (phpize在PHP的安装目录下,不知道可以通过find / -name 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
说明zlib和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 就能看到了,看到下图说明安装成功!

以上办法还是不行的话,继续:

办法二

一、gd库是什么

gd库是一个开源的图像处理库,它通过提供一系列用来处理图片的API,使其可以用来创建图表、图形、缩略图以及其他图像的处理操作。

gd库支持JPG、PNG、GIF等常见的图片格式。所以在安装gd库之前,我们需要安装libpng、jpegsrc、freetype这三款软件。

 

 

二、安装

   这里我直接安装php扩展
 

   1.进入php安装文件夹 中的gd文件夹

[root@zong local]# cd php-5.5.30

 

[root@zong php-5.5.30]# cd ext/

[root@zong ext]# cd gd/

 

2.使用phpize编译

[root@zong gd]# /usr/local/php/bin/phpize 

Configuring for:

PHP Api Version:         20121113

Zend Module Api No:      20121212

Zend Extension Api No:   220121212

 

为什么要使用phpize命令呢?因为当我们需要再添加一些模块,但是又不想重新编译php时,这时我们就可以使用phpize命令。

        注意:phpize命令根据php的安装位置来决定,我这个php安装时使用默认安装位置。

 

 

可以进行单独编译安装gd库了
3.开始检查编译环境:

 

[root@zong gd]# ./configure --with-php-config=/usr/local/php/bin/php-config 

        

       编译时出错:configure: error: png.h not found.

       查证需要安装libpng,

       于是我执行命令
        yum install libpng
        但是并没有解决,想了下是不是还有什么devel包没安装吧,试了下面这个命令
        yum install libpng-devel

         解决  

 

       再次检查编译环境
       [root@zong gd]# ./configure --with-php-config=/usr/local/php/bin/php-config 

 

       4. 进行编译
        [root@zong gd]# make

 

        5. 进行安装,成功  

       [root@zong gd]# make install

       Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/

       Installing header files:          /usr/local/php/include/php/

 

 

 

         6.把生成的gd.so(在Installing shared extensions 这个位置)
         放置到php的扩展文件夹中(在配置信息中查找)

 

 7.接着修改php.ini文件(如果不知道php.ini文件的位置,我们可以通过php --ini命令进行查看)

  在该文件的Dynamic Extensions模块下添加一行extension=gd.so。如下:

vi /usr/local/lib/php.ini

 extension=gd.so

 

 

 

8.gd库安装完毕以及php.ini文件修改完毕后,我们就可以通过php –m命令查看gd模块是否加载成功

 

 

9.重启apache服务器

服务器重启
/usr/local/apache/bin/apachectl restart

【使用wordPress的话同时要安装myslqli.so,php_openssl.so扩展】

【php_openssl.so,对接支付签名使用】./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config

报错解决办法:

将php安装成php-fpm编译时报错/usr/lib64/libpthread.so.0: error adding symbols: DSO missing from command li

 

由于之前装了一个LAMP, 现在要装一个LNMP, 需要再次安装php(这次需要将php编译为php-fpm与nginx通讯) 在执行完配置后, 执行make 编译, 报下面的错:

 /usr/lib64/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
[13:58:55][root@VM_15_2_centos:~/packages/php-5.6.36]# ls /usr/lib64


解决: 编译前执行 make clean 清除一下之前编译产生的旧objects

END/
 

 

你可能感兴趣的:(系统架构)