//安装平台:
centos 5.5 x86_64

//软体:
详见安装过程

//安装基础依赖包
>yum -y install gcc gcc-c++ autoconf ncurses

//编译安装zlib
>tar zxvf zlib-1.2.5.tar.gz
>cd zlib-1.2.5
>./configure --prefix=/usr/local/zlib
>make
>make install

//编译安装 libpng
>tar zxvf libpng-1.5.1.tar.gz
>cd libpng-1.5.1
>./configure --prefix=/usr/local/libng
>make
>make install

//编译安装 jpeg
>tar zxvf jpegsrc.v8c.tar.gz
>cd jpeg-8c/
>./configure --prefix=/usr/local/libjpeg --enable-shared --enable-static
>make
>make install
>ln -s /usr/local/libjpeg/lib/* /usr/lib/

//编译安装 freetype
>tar zxvf freetype-2.4.4.tar.gz
>cd freetype-2.4.4
>./configure --prefix=/usr/local/freetype
>make
>make install

//编译安装 fontconfig
>tar zxvf fontconfig-2.8.0.tar.gz
>cd fontconfig-2.8.0
>./configure --with-freetype-config=/usr/local/freetype/bin/freetype-config
>make
>make install

//编译安装libxml
>tar zxvf libxml2-2.7.4.tar.gz
>cd libxml2-2.7.4
>./configure --prefix=/usr/local/libxml
>make
>make install

//编译安装libiconv
>tar zxvf libiconv-1.13.1.tar.gz
>cd libiconv-1.13.1/
>./configure --prefix=/usr/local/libiconv
>make
>make install

//编译安装libmcrypt
>tar zxvf libmcrypt-2.5.8.tar.gz
>cd libmcrypt-2.5.8
>./configure --prefix=/usr/local/libmcrypt
>make
>make install

//编译安装gettext
>tar zxvf gettext-0.18.1.1.tar.gz
>cd gettext-0.18.1.1
>./configure
>make
>make install

//编译安装 GD
>tar zxvf gd-2.0.35.tar.gz
>cd gd-2.0.35
>vi gd_png.c
include "/usr/local/libpng/include/png.h"
>./configure --prefix=/usr/local/libgd --with-png=/usr/local/libpng --with-libiconv-prefix=/usr/local/libiconv --with-freetype=/usr/local/freetype --with-jpeg=/usr/local/libjpeg --with-fontconfig=/usr/local/fontconfig/ --enable-m4_pattern_allow
>make
>make install

整合php & gd
  对于php5.4有个bug,在 "gdIOCtx"结构体中没有 "data" 这个成员,解决办法
$vi <gd_dir>/include/gd_io.h
/*
typedef struct gdIOCtx

{
  int (*getC) (struct gdIOCtx *);
  int (*getBuf) (struct gdIOCtx *, void *, int);
  void (*putC) (struct gdIOCtx *, int);
  int (*putBuf) (struct gdIOCtx *, const void *, int);
  int (*seek) (struct gdIOCtx *, const int);
  long (*tell) (struct gdIOCtx *);
  void (*gd_free) (struct gdIOCtx *);
  void (*data);// 新添加这一行
}
*/

整合php & gd
$ cd <php源文件>/ext/gd
$ /usr/local/php5/bin/phpize //生成configure
$ ./configure --with-gd=/usr/local/gd --with-jpeg-dir=/usr/local/jpeg8d --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype --with-zlib-dir=/usr/local/zlib --with-php-config=/usr/local/php5/bin/php-config
$ make && make install
$ vi /usr/local/php5/apache/php.ini
/*
extension=gd.so //添加这一行
*/
$ apache restart

注:不知道是不是动态扩展gd的原因, 这个时候访问服务器并不能打开网页, 查找apache error_log, 上面写着:
/usr/local/apache//bin/httpd: symbol lookup error: /usr/local/php5/lib/php/extensions/no-debug-zts-20100525/gd.so: undefined symbol: gdJpegGetVersionString

/usr/local/apache//bin/httpd: symbol lookup error: /usr/local/php5/lib/php/extensions/no-debug-zts-20100525/gd.so: undefined symbol: gdPngGetVersionString

在网上找了好长时间, 找不到解决这个问题的办法, 或者这个问题引起的原因, 我想到了一个办法作为临时的解决办法:修改gd.c
$ vi $ cd <php源文件>/ext/gd/gd.c
/*
在这个文件的下面添加
# include <{libpng安装目录}png.h>
# include <{libjpeg安装目录}jpeglib.h>
const char * gdJpegGetVersionString()
{
          switch(JPEG_LIB_VERSION) {
                  case 62:
                          return "6b";
                          break;
                  default:
                          return "unknown";
          }
}

const char * gdPngGetVersionString()
{
         return PNG_LIBPNG_VER_STRING;
}

*/

然后重新整合php & gd, 问题解决,可以生成验证码.

转载于:https://www.cnblogs.com/keethebest/archive/2013/06/13/3133906.html

CentOS编译安装php扩展gd相关推荐

  1. 编译安装php apache,CentOS编译安装Apache2.4+PHP5.6

    CentOS下YUM安装PHP和Apache是比较简单的,可是一般默认情况下的PHP版本是5.3,Apache版本是2.2.因为考虑到PHP版本和Apache版本越高性能越好,就打算在CentOS下编 ...

  2. php7.1安装mysqli扩展,centos php7 安装mysqli扩展心得

    在新配服务器时发现,php无法连接到mysql.通过phpinfo发现.根本没有显示mysqli的相关配置.经过一系列研究.总结了下.: 第一步: 在phpinfo里没有mysqli配置,原因是安装p ...

  3. docker php安装gd扩展_docker安装php扩展gd库

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 ...

  4. centos 编译安装mysql

    centos 编译安装mysql,请看附件 转载于:https://blog.51cto.com/3131854/1883713

  5. 编译安装 PHP 扩展 - 含 swoole 扩展安装和升级

    编译安装 Redis 扩展 - phpredis 编译安装 Swoole 扩展 编译安装 Pcntl 扩展 编译安装 Sockets 扩展 编译安装 Event 扩展 编译安装 Mongodb 扩展 ...

  6. CENTOS编译安装APACHE 2.4.6笔记

    之前服务器 Apache 版本一直是 2.2.x,鉴于 Centos 更新软件的惰性,我看直到 2014 年结束,apache 2.4 都不一定会出现在 Centos 中,我是不打算等了,编译安装吧. ...

  7. Centos编译安装Apache 2.4.6笔记 配置

    转载链接:http://www.onepx.com/centos-apache-246.html 之前服务器 Apache 版本一直是 2.2.x,鉴于 Centos 更新软件的惰性,我看直到 201 ...

  8. CentOS编译安装Qt(Qt可使用静态编译编译器)

    CentOS编译安装Qt(Qt可使用静态编译编译器) 文章目录 前言 下载Qt源码 编译安装--以4.7.4为例 安装QtCreator 设置编译器 附加--Windows Qt静态编译的方法(以5. ...

  9. centos php安装redis扩展,Centos7编译安装redis、php安装phpredis扩展

    解压 进入 make: # tar zxvf redis-4.0.9.tar.gz # cd redis-4.0.9/ # make # cd src # make install 为了方便管理,将R ...

最新文章

  1. 红曲面怎么做_新年就要“红”运当头 买款高颜值红色旗舰让年味更浓
  2. 使用createrepo自建yum源
  3. mysql 全值匹配什么意思
  4. 互联网大厂必学技能:压力测试!
  5. matlab绘图z=sin(x,用matlab编写函数文件,实现绘制函数 z= sin(x+y)/(x+y)在【-2:2,-2:2]的图像...
  6. Wyn Enterprise 核心功能:系统集成
  7. python前端界面模板_Python编程flask使用页面模版的方法
  8. python网络爬虫与信息提取视频_Python网络爬虫与信息提取入门5
  9. python简单代码-手把手教你用Python创建简单的神经网络(附代码)
  10. MongoDB 在windows shell环境下的基本操作和命令的使用示例(四)
  11. python 使用numpy计算混淆矩阵
  12. 当AI学会共情,港科大新研究赋予Chatbot同理心 | 一周AI最火论文
  13. 算法-舍弃不吉利数字
  14. 【WSN通信】基于matlab粒子群算法改进能量均衡高效WSN LEACH协议【含Matlab源码 1562期】
  15. ORACLE 金额转大写中文
  16. AR体感游戏,体感互动游戏,AR大屏互动
  17. mysql从数据库查询的时间与实际时间相差8小时(时区问题)
  18. 从零开始创建一个Android主屏幕Widget
  19. 如何更新/升级 python 库?
  20. 02_C++实现多线程服务器代码(linux系统)

热门文章

  1. hibernate persist不能插入到表中
  2. centos下wget时提示unable to resolve host address ...
  3. keepalived实现nginx的高可用
  4. Centos7 Git源码安装
  5. 给sublime设置格式化代码的快捷键
  6. 一、认识Python
  7. 万达与IBM联手发力公有云市场,为不让马云当首富王健林也是拼了
  8. zookeeper3.4.5自动清理日志
  9. 《TCP/IP详解卷1:协议》第3章 IP:网际协议(2)-读书笔记
  10. JQuery果然是神器,这里顺便测试一下我发现的那个漏洞!