
编译安装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 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 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 support | active |
| libXML Version | 2.6.31 |
| libXML streams | enabled |
看到了吧 , 支持东西挺多了, gif jpg png wbmp freetype gd
---------
这是 mysql6 的支持
| 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 上,在文章的后面给作者留言 给予支持。谢谢
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了很多帖子,也没有找到相关解决方法。
希望能够能指点一下!
[回复]
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 还有路径要一致
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也都正常!
非常感谢站长的指点!!
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库的路径到底有什么不同呢?
[回复]
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编译后提示无效参数但编译也正常完成了,我应该怎么写路径。
04月 11th, 2009 at 10:33:32 #admin
没有试过默认情况下安装, 还有如果参数路径不正确可以可以编译完成吧,只是最后不能支持。可以使用 phpinfo(); 来查看最后是否支持。
[回复]
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
05月 21st, 2009 at 10:20:19 #lisdoo
管理员你好,请问这里边哪个是libxml的RPM包:ftp://xmlsoft.org/libxml2/
[回复]
adminreply on 2009-05-21 15:51:48:
这个我也不清楚了,少安装rpm包,应该都是版本新旧区别吧,yum安装不行?
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
谢谢
[回复]
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数据库的页面进行测试。。。
不要用整个项目来测试
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测试页面是, 写一个查询语句,看看是否可以查到数据,
如果可以查到数据就证明没有问题了。
06月 12th, 2009 at 13:12:15 #名扬天下
哦原来是这样啊,你的视频安装MYSQL的路径不是装在那,。。。
谢谢
[回复]
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
这是一行语句, 注意不要有分行,最好在记事本 写成一行语句 在执行。
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了,用这个文件就可以了