编译安装PHP5.2.6结合apache2.2,mysql6支持gd库(gif,jpeg,png,libxml2)

下面我启动CentOS5.1 Linux 。
在上节视频中演示安装了GD库,其实都是为了让php支持做的准备,
真正主角是今天的视频内容 - 编译安装目前最新版 php-5.2.6.tar.gz

我们将会演示如何使用上次装好的png jpeg ttf字体 libxml 等等gd库。

首先去 http://www.php.net 官方下载最新版,目前为止 php5.2.6是最新的版本
也可以到 http://www.17rumen.com/download/tools/php-5.2.6.7z
解压密码:www.17rumen.com

我已经下载好了。等下看我演示如何将 php-5.2.6.tar.gz 传到虚拟机上的
CentOS5.1 操作系统上去。

我用 putty 登陆上CentOS5.1, Linux 的ip是192.168.1.118

通过一个工具 webserver 在window上架设一个简单的web服务器
http://www.17rumen.com/download/tools/webserver.7z  下载webserver这个工具
解压密码:www.17rumen.com
http://127.0.0.1:2000 测试 webserver 是否成功工作 , 看到这个页面表示成功了

192.168.1.107 这是我 window 的ip地址。 最后看我操作

把 php-5.2.6.tar.gz 放入 webserv 目录里面,就像我这样

然后我们可以在 Linux 上使用 wget http://192.168.1.107:2000/php-5.2.6.tar.gz  来下载得到

tar zxvf php-5.2.6.tar.gz

cd php-5.2.6

这里要提醒大家注意:你如果用记事本,去掉 自动换行 再复制

这里的 路径例如: apache mysql gd jpeg freetype 等等的路径 根据自己安装的来写,如果你
一直按照我以前视频的来安装的话,那就复制我的都没有问题了。

# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local --with-gd=/usr/local/libgd --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr/local/libpng --with-libxml-dir=/usr/local/libxml2 --with-zlib-dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets

Thank you for using PHP.
表示没有问题了,看到这句话。
下面开始编译, 编译用的时间相对比较长,稍等

make
好了,编译完成了,提示我们 make test , 这里我就不做这一步测试操作了,省点时间。
make test

make install

下面这个是拷贝一个php的配置文件,作为以后我们修改php的ini文件
cp php.ini-dist /usr/local/php5/lib/php.ini

下面修改 apache 配置文件 httpd.conf 加入对php的支持
vi /etc/httpd.conf

加入:

AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

然后重启 apache
/usr/local/apache2/bin/apachectl stop &

这里出现一个错误:
httpd: Syntax error on line 53 of /etc/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied

解决办法:关闭 SELinux

vi /etc/sysconfig/selinux
屏蔽掉,
#SELINUX=enforcing
然后添加
SELINUX=disabled

重启一下 Linux
shutdown -r now

这样重启就可以了
好, 重启完了, 我们再用 putty 登陆上去

然后我们编写一个 php 文件测试一下, 看看我们装好的php支持哪些东西
下面这个是apache默认的虚拟目录
cd /usr/local/apache2/htdocs
vi test.php

文件内容
<?php
   phpinfo();
?>

192.168.1.118 这是我Linux上的ip地址,我们在window上访问一下

http://192.168.1.118/test.php
看到下面 这个页面,表示 apache 已经支持 php 了。

gd

GD Support enabled
GD Version 2.0 or higher
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.5
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled

zlib

ZLib Support enabled
Stream Wrapper support compress.zlib://
Stream Filter support zlib.inflate, zlib.deflate
Compiled Version 1.2.3
Linked Version 1.2.3

libxml

libXML support active
libXML Version 2.6.31
libXML streams enabled

看到了吧 , 支持东西挺多了, gif jpg png wbmp  freetype gd

---------
这是 mysql6 的支持

mysql

MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 6.0.4-alpha
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_INCLUDE -I/usr/local/include/mysql
MYSQL_LIBS -L/usr/local/lib/mysql -lmysqlclient

==================================

如果想看更加多支持了哪些,还有详细信息,请看视频,视频最后有显示出来。

好了, 编译安装php5.2.6就演示到这里,谢谢大家支持!

如果大家在根据视频来操作 出现任何问题或者有好的建议,欢迎大家
www.17rumen.com 上,在文章的后面给作者留言 给予支持。谢谢


“CentOS5.1 Linux配置一台(LAMP)web服务器_06 编译安装PHP5.2.6结合apache2.2,mysql6支持gd库(gif,jpeg,png,libxml2)”有27个评论

  1. 02月 19th, 2009 at 17:30:37 #kingshade

    你好。不知道你能不能收到留言。是这样我照着视频一步步操作遇到一个难题。
    情况是PHP我装的版本是5.2.8。编译正常通过。可以看到编译最后的感谢使用php的画面。然后Make就无法通过。总是提示:
    cc1: warning: changing search order for system directory "/usr/include"
    cc1: warning: as it has already been specified as a non-system directory。导致最终Make失败。
    Google了很多帖子,也没有找到相关解决方法。
    希望能够能指点一下!

    [回复]

  2. 02月 19th, 2009 at 17:39:13 #kingshade

    [root@localhost php-5.2.8]# make
    /bin/sh /root/command/lamp/php-5.2.8/libtool --silent --preserve-dup-deps --mode=compile gcc -I/root/command/lamp/php-5.2.8/ext/pcre/pcrelib -Iext/pcre/ -I/root/command/lamp/php-5.2.8/ext/pcre/ -DPHP_ATOM_INC -I/root/command/lamp/php-5.2.8/include -I/root/command/lamp/php-5.2.8/main -I/root/command/lamp/php-5.2.8 -I/usr/local/src/libxml2/include/libxml2 -I/usr/local/src/zlib/include -I/root/command/lamp/php-5.2.8/ext/date/lib -I/usr/local/libjpeg/include -I/usr/local/src/libpng/include -I/usr/local/src/freetype/include -I/usr/local/src/freetype/include/freetype2 -I/usr/local/src/libgd/include -I/root/command/lamp/php-5.2.8/ext/mbstring/oniguruma -I/root/command/lamp/php-5.2.8/ext/mbstring/libmbfl -I/root/command/lamp/php-5.2.8/ext/mbstring/libmbfl/mbfl -I/usr/local/include/mysql -I/root/command/lamp/php-5.2.8/TSRM -I/root/command/lamp/php-5.2.8/Zend -I/usr/include -g -O2 -prefer-non-pic -c /root/command/lamp/php-5.2.8/ext/pcre/pcrelib/pcre_config.c -o ext/pcre/pcrelib/pcre_config.lo
    cc1: warning: changing search order for system directory "/usr/include"
    cc1: warning: as it has already been specified as a non-system directory
    /bin/sh /root/command/lamp/php-5.2.8/libtool --silent --preserve-dup-deps --mode=compile gcc -I/root/command/lamp/php-5.2.8/ext/pcre/pcrelib -Iext/pcre/ -I/root/command/lamp/php-5.2.8/ext/pcre/ -DPHP_ATOM_INC -I/root/command/lamp/php-5.2.8/include -I/root/command/lamp/php-5.2.8/main -I/root/command/lamp/php-5.2.8 -I/usr/local/src/libxml2/include/libxml2 -I/usr/local/src/zlib/include -I/root/command/lamp/php-5.2.8/ext/date/lib -I/usr/local/libjpeg/include -I/usr/local/src/libpng/include -I/usr/local/src/freetype/include -I/usr/local/src/freetype/include/freetype2 -I/usr/local/src/libgd/include -I/root/command/lamp/php-5.2.8/ext/mbstring/oniguruma -I/root/command/lamp/php-5.2.8/ext/mbstring/libmbfl -I/root/command/lamp/php-5.2.8/ext/mbstring/libmbfl/mbfl -I/usr/local/include/mysql -I/root/command/lamp/php-5.2.8/TSRM -I/root/command/lamp/php-5.2.8/Zend -I/usr/include -g -O2 -prefer-non-pic -c /root/command/lamp/php-5.2.8/ext/pcre/pcrelib/pcre_exec.c -o ext/pcre/pcrelib/pcre_exec.lo
    cc1: warning: changing search order for system directory "/usr/include"
    cc1: warning: as it has already been specified as a non-system directory
    make: *** [ext/pcre/pcrelib/pcre_exec.lo] Error 1
    这是make时,详细的输出信息!
    都困扰一天了!

    [回复]

    adminreply on 2009-02-19 23:01:04:

    cc1: warning: changing search order for system directory "/usr/include"
    cc1: warning: as it has already been specified as a non-system directory
    注意make之前 # ./configure 的参数,根据自己系统环境做出修改

    adminreply on 2009-02-19 23:18:04:

    # ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local --with-gd=/usr/local/libgd --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr/local/libpng --with-libxml-dir=/usr/local/libxml2 --with-zlib-dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets
    如果你只是装php整合apache和mysql就没必要上面那样写。就像我以前另外的一篇文章http://www.17rumen.com/archives/12.html 写到
    ]# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local
    整合之前都要看你系统具体情况的,例如加上 --with-libxml-dir=/usr/local/libxml2 你事先必须装上libxml2 还有路径要一致

  3. 02月 20th, 2009 at 15:03:44 #kingshade

    站长好。感谢回复。
    你的意思是我编译时指定的其他插件例如libpng类似的路径指定的不对是么?
    我已经仔细对照过了,几个插件路径指定没有问题。
    而且我即使只是单单整合apache和mysql,这两个不加其他参数也会出现上面类似错误。这两个的路径肯定没有问题啊。
    但仍旧出现:
    cc1: warning: changing search order for system directory "/usr/include"
    cc1: warning: as it has already been specified as a non-system directory
    这种错误。
    奇怪的是我不中断make的过程。一直到最后,居然告诉我make完成。
    只是make install后,试验教程后面的那个test.php的时候有问题。
    不出现php的诊断界面,而是要我下载该页。显然还是PHP有错误。
    PS:非常感谢提供这么好的教学视频。

    [回复]

    adminreply on 2009-02-20 17:00:32:

    这样就是没有装好,apache还不能解析php不然不会要你下载的。
    你试下只整合apache试试看。

    kingshadereply on 2009-02-23 10:07:34:

    好了。呵呵,还是带着全参数编译的。错误依旧,不过改了下php的配置文件,也不知道搞哪里了,就这么通过了。PHPADMIN也都正常!
    非常感谢站长的指点!!

  4. 03月 4th, 2009 at 10:12:32 #centos_vsftpd

    我也遇到问题了:
    我按照你的教程从mysql->apache2->GD->php以前在多台虚拟机上配置过都没有出现问题。
    但今天在我们公司的服务器上配置的时候运行命令:./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local --with-gd=/usr/local/libgd --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr/local/libpng --with-libxml-dir=/usr/local/libxml2 --with-zlib-dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets

    出现错误:configure: error: GD build test failed. Please check the config.log for details.

    我也按照网上的提示:cp gd.h /usr/local/lib 或者 cp gd.h /usr/local/gd2 \\编译PHP的时候会缺少这个文件出错
    这么做了,还是不行。

    最后我把:--with-gd=/usr/local/libgd改成:--with-gd,把后面的‘=/usr/local/libgd’去掉了,这次编译就成功了。
    然后打开网页:http://122.70.144.26/yipiw/phpinfo.php

    看下GD库也全部是好的。

    您再看这篇回帖:http://bbs3.chinaunix.net/viewthread.php?tid=473127

    他好像编译的时候都没有带GD库的路径:./configure --with-apxs=/usr/local/apache/bin/apxs --with-mysql --with-gd --with-zlib --with-png --with-jpeg

    写不写GD库的路径到底有什么不同呢?

    [回复]

  5. 03月 4th, 2009 at 11:17:20 #admin

    因为他之前编译安装GD库, ./configure 全部都是默认路径。

    [回复]

    yingzireply on 2009-04-08 16:19:13:

    问下,如果系统中不是自己编译的,尤其这些--with-gd --with-zlib --with-png --with-jpeg,不是rpm装的就是yum装的,包括GD库也是,是不是这样GD就不支持编译时那些参数了。那我应该如何写这些的参数,或者需要从新编译GD。有些不加具体路径,还可以,但是libxml,png,jpeg,freetype这四个,php编译后提示无效参数但编译也正常完成了,我应该怎么写路径。

  6. 04月 11th, 2009 at 10:33:32 #admin

    没有试过默认情况下安装, 还有如果参数路径不正确可以可以编译完成吧,只是最后不能支持。可以使用 phpinfo(); 来查看最后是否支持。

    [回复]

  7. 05月 20th, 2009 at 00:37:52 #lisdoo

    实在没有办法了,希望能帮我解决一下
    (GD安装完成,开始安装PHP,和视频的顺序是一样的)
    #cd php-5.2.9
    #./configure .......(后面那些我就不写了)

    Configuring extensions
    checking whether to enable LIBXMLsupport... yes
    checking libxml2 install dir... /usr/local/libxml2
    checking for xml2-config path... /usr/local/libxml2/bin/xml2-config
    checking whether libxml build works... no
    configure: error: build test failed. Please check the config.log for details

    在linux9上没有遇到这种情况,安装顺利
    但是在CentOS上总是在这里出问题,
    linux enterprise 5 上也是一样

    今天完全按照视频来,还是一样
    网上能收集到的解决方法也是不行的

    反正明天我还要再试一次

    但是我安装N多次了,从月初就开始搞,平均每天都要装一次,有时还要两次三次,大概没有成功过
    崩溃中

    [回复]

    adminreply on 2009-05-20 06:52:25:

    checking whether libxml build works... no
    configure: error: build test failed. Please check the config.log for details

    这个可能是 libxml 的问题,
    看一下 在/usr/lib和/usr/local/lib 有没有 libxml2......so 文件,
    如果都有,那么编译时libxml路径使用 /usr/lib 下面的

    如果没有,安装其libxml的RPM包,或用yum安装libxml

  8. 05月 21st, 2009 at 10:20:19 #lisdoo

    管理员你好,请问这里边哪个是libxml的RPM包:ftp://xmlsoft.org/libxml2/

    [回复]

    adminreply on 2009-05-21 15:51:48:

    这个我也不清楚了,少安装rpm包,应该都是版本新旧区别吧,yum安装不行?

  9. 05月 23rd, 2009 at 16:05:14 #lisdoo

    我不会yum啊!
    但是我把zlib给得重新安装了一下,没想到就好了,
    我安装的是:zlib-1.2.3-18.fc9.i386.rpm 和
    zlib-devel-1.2.3-18.fc9.i386.rpm
    谢谢

    [回复]

  10. 06月 8th, 2009 at 02:26:25 #名扬天下

    你好,我按照你的方法安装CentOS 。MySQL,apache,PHP5,都正常
    但是我把程序放上去却连接不到库,我在反复看了MYSQL 以及PHP5的安装视频,发现MYSQL初始化useradd -d /usr/local/var mysql 怎么跟PHP的这段with-mysql=/usr/local ,对不上./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs 开始with-mysql=/usr/local 结束--with-gd=/usr/local/libgd --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr/local/libpng --with-libxml-dir=/usr/local/libxml2 --with-zlib-dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets,是因为这样才导致PHP么MYSQL无法融合吗?还有别的原因,声明我程序在win系统里是可以用的

    [回复]

    adminreply on 2009-06-08 09:06:33:

    useradd -d /usr/local/var mysql 怎么跟PHP的这段with-mysql=/usr/local

    /usr/local/var 这个目录下应该是存放 数据库文件的地方,添加mysql这个用户是没有问题的,是这个目录。

    而 /usr/local 这是整个mysql的目录路径

    adminreply on 2009-06-08 09:08:10:

    最好写一个简单的 php 链接 mysql数据库的页面进行测试。。。
    不要用整个项目来测试

  11. 06月 11th, 2009 at 00:26:24 #名扬天下

    谢谢你的回答感谢!
    但是我通过

    php 链接 mysql数据库的页面进行测试。。。
    -------------------------------------------------------------------
    MySQL Support enabled
    Active Persistent Links 0
    Active Links 0
    Client API version 5.0.22
    MYSQL_MODULE_TYPE external
    MYSQL_SOCKET /tmp/mysql.sock
    MYSQL_INCLUDE -I/usr/local/include/mysql
    MYSQL_LIBS -L/usr/local/lib/mysql -lmysqlclient

    Directive Local Value Master Value
    mysql.allow_persistent On On
    mysql.connect_timeout 60 60
    mysql.default_host no value no value
    mysql.default_password no value no value
    mysql.default_port no value no value
    mysql.default_socket no value no value
    mysql.default_user no value no value
    mysql.max_links Unlimited Unlimited
    mysql.max_persistent Unlimited Unlimited
    mysql.trace_mode Off Off

    我这样是不是连接上了,对比了你的教程也是这样的,但是库还是没办法连接上我就是不不懂你在安装PHP的时候这段./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local --with-gd=/usr/local/libgd --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr/local/libpng --with-libxml-dir=/usr/local/libxml2 --with-zlib-dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets
    里面的这个--with-mysql=/usr/local 这个是指什么?是指数据库的安装路径吗?

    [回复]

    adminreply on 2009-06-12 09:15:34:

    是的,是安装路径,

    我说的php测试页面是, 写一个查询语句,看看是否可以查到数据,
    如果可以查到数据就证明没有问题了。

  12. 06月 12th, 2009 at 13:12:15 #名扬天下

    哦原来是这样啊,你的视频安装MYSQL的路径不是装在那,。。。
    谢谢

    [回复]

  13. 09月 27th, 2009 at 12:38:55 #李全

    你好,不知道怎么称呼你,称你老师吧,

    我遇到一个问题,我是一步一步安装你们的教程做的,在做
    (编译安装GD库对gif.jpg(jpeg).png.wbmp.xml.和.ttf字体的支持)

    (编译安装PHP5.2.6整合apache2.2,mysql6支持gd库)
    时出现问题

    我在安装PHP的时候,按你们的提示做的,当configure时候出错了。
    ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local --with-gd=/usr/local/libgd --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr/local/libpng --with-libxml-dir=/usr/local/libxml2 --with-zlib-dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets

    完了之后有Thank you for using PHP.

    后面还有一句
    --with-ttf

    not found

    我反过去去看装TTF时的文件夹
    ---------------------------------
    3:安装ttf ( ttf 是字体的支持 )

    tar zxvf freetype-2.3.5.tar.gz
    cd freetype-2.3.5
    ./configure --prefix=/usr/local/freetype

    make
    make install

    ---------------------------------

    在编译安装PHP的时候不知道为什么这个TTF找不到,并出现
    --with-ttf

    not found
    的错误
    谢谢老师指教啊

    [回复]

    adminreply on 2009-10-03 08:27:10:

    1。 事先有没有安装 3:安装ttf ( ttf 是字体的支持 ) ??

    2。
    ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local --with-gd=/usr/local/libgd --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr/local/libpng --with-libxml-dir=/usr/local/libxml2 --with-zlib-dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets

    这是一行语句, 注意不要有分行,最好在记事本 写成一行语句 在执行。

  14. 09月 27th, 2009 at 13:19:47 #李全


    按教程做的
    PHP5.3.0的

    安装后复制文件
    cp php.ini-dist /usr/local/php5/lib/php.ini

    居然提示php.ini-dist没有找到

    晕死啊。

    搜索都搜索不到

    [回复]

    adminreply on 2009-10-03 08:22:31:

    tar zxvf php-5.2.6.tar.gz

    cd php-5.2.6

    应该就在 解压的文件夹里面可以找到啊。

    李全reply on 2009-10-05 22:42:29:

    问题已经解决了,感谢您的答复

    我用的是新版本的PHP,好像是5.3多的

    网上搜索了一下 5.3版本以上的都是把php.ini-dist改名为php.ini-development了,用这个文件就可以了

有任何疑问或建议,可以给作者留言:



公告:

  • 2010年5月之前的视频是文字解说演示,没有声音。
  • 2010年5月以后的视频全部带声音。