依赖
yum install wget make gcc gcc-c++ bison autoconf patch \
pcre-devel zlib-devel openssl-devel net-snmp-devel \
ncurses-devel libxml2-devel bzip2-devel gd-devel libcurl-devel \
mysql-devel memcached libtool-ltdl-devel bzip2
安装libmcrypt
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make
make install
安装php-5.2.17以及php-fpm补丁包
tar jxvf php-5.2.17.tar.bz2
gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1
编译安装PHP
对于64位系统的CentOS需要执行
ln -s /usr/lib64/libjpeg.so /usr/lib/
ln -s /usr/lib64/libpng.so /usr/lib/
ln -s /usr/lib64/mysql/libmysqlclient.so.18.0.0 /usr/lib/libmysqlclient.so # 到/usr/lib64/mysql/下查下文件版本再做ln!
cd php-5.2.17
./configure --prefix=/usr/local/php --enable-fastcgi \
--enable-fpm --enable-gd-native-ttf --enable-gd-jis-conv --enable-soap \
--enable-zip --enable-pcntl --enable-sockets --enable-mbstring --enable-xml \
--with-bz2 --with-openssl --with-iconv --with-zlib --with-curl \
--with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-mcrypt \
--with-mysql --with-mysqli
make
make install
cp php.ini-recommended /usr/local/php/lib/php.ini
编译时mysql及mysqli可能发生错误
# ./configure去掉--with-mysql --with-mysqli后先编译php,然后单独编译mysql和mysqli
cd php-5.2.17/ext/mysql
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/bin/mysql/
make && make install
cd php-5.2.17/ext/mysql
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/bin/mysql_config
make && make install
# 在/usr/local/php/lib/php.ini文件修改
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
配置php-fpm扩展
/usr/local/php/etc/php-fpm.conf
Unix user of processes
<!-- <value name="user">nobody</value> -->
Unix group of processes
<!-- <value name="group">nobody</value> -->
# 去掉里面的<!--的标记
启动php-fpm服务
/usr/local/php/sbin/php-fpm start
netstat -anp|grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 122915/php-cgi
安装配置ZendOptimizer
tar -zxvf ZendOptimizer-3.3.3-linux-glibc23-x86_64.tar.gz
cd ZendOptimizer-3.3.3-linux-glibc23-x86_64
mkdir -p /usr/local/Zend/lib
cp data/5_2_x_comp/ZendOptimizer.so /usr/local/Zend/lib/
在/usr/local/php/lib/php.ini文件尾部添加
[Zend]
zend_optimizer.optimization_level=1023
zend_optimizer.encoder_loader=1
zend_extension=/usr/local/Zend/lib/ZendOptimizer.so
make PHP错误
补丁文件
--- ext/dom/node.c 2012-08-06 17:49:48.826716692 +0800
+++ ext/dom/node.c 2012-08-06 17:52:47.633484660 +0800
@@ -1895,9 +1895,17 @@ static void dom_canonicalization(INTERNA
RETVAL_FALSE;
} else {
if (mode == 0) {
+#ifdef LIBXML2_NEW_BUFFER
+ ret = xmlOutputBufferGetSize(buf);
+#else
ret = buf->buffer->use;
+#endif
if (ret > 0) {
+#ifdef LIBXML2_NEW_BUFFER
+ RETVAL_STRINGL((char *) xmlOutputBufferGetContent(buf), ret, 1);
+#else
RETVAL_STRINGL((char *) buf->buffer->content, ret, 1);
+#endif
} else {
RETVAL_EMPTY_STRING();
}
--- ext/dom/documenttype.c 2012-08-06 18:02:16.019640870 +0800
+++ ext/dom/documenttype.c 2012-08-06 18:06:16.612228905 +0800
@@ -205,7 +205,13 @@ int dom_documenttype_internal_subset_rea
if (buff != NULL) {
xmlNodeDumpOutput (buff, NULL, (xmlNodePtr) intsubset, 0, 0, NULL);
xmlOutputBufferFlush(buff);
+
+#ifdef LIBXML2_NEW_BUFFER
+ ZVAL_STRINGL(*retval, xmlOutputBufferGetContent(buff),
+ xmlOutputBufferGetSize(buff), 1);
+#else
ZVAL_STRINGL(*retval, buff->buffer->content, buff->buffer->use, 1);
+#endif
(void)xmlOutputBufferClose(buff);
return SUCCESS;
}
--- ext/simplexml/simplexml.c 2012-08-06 18:10:44.621017026 +0800
+++ ext/simplexml/simplexml.c 2012-08-06 18:12:48.016270419 +0800
@@ -1417,7 +1417,12 @@ SXE_METHOD(asXML)
xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, ((xmlDocPtr) sxe->document->ptr)->encoding);
xmlOutputBufferFlush(outbuf);
+#ifdef LIBXML2_NEW_BUFFER
+ RETVAL_STRINGL((char *)xmlOutputBufferGetContent(outbuf),
+ xmlOutputBufferGetSize(outbuf), 1);
+#else
RETVAL_STRINGL((char *)outbuf->buffer->content, outbuf->buffer->use, 1);
+#endif
xmlOutputBufferClose(outbuf);
}
} else {
# 补丁文件存到php源码目录下patch.txt
patch -bp1 < patch.txt
# 然后依次输入
./ext/dom/node.c
./ext/dom/documenttype.c
./ext/simplexml/simplexml.c
网友评论