美文网首页
CentOS7 部署php5.2.17+ZendOptimize

CentOS7 部署php5.2.17+ZendOptimize

作者: 钾肥尔德 | 来源:发表于2020-02-27 15:46 被阅读0次

依赖

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

相关文章

网友评论

      本文标题:CentOS7 部署php5.2.17+ZendOptimize

      本文链接:https://www.haomeiwen.com/subject/mqtxhhtx.html