一、基本环境概况
客户一台服务器已经安装nginx + php 5.2 + mysql 5.2 + pcre 7.2 + apc ;因为客户网站程序需要进行升级,程序反馈所现有版本不能满足新版本程序的需要。需要进行升级操作; 程序员自己对服务器进行升级操作,不过结果却非常的令人失望(…你懂的…)。
二、所需软件准备
程序员新提出的需求如下:
php 需要升级到5.3以上的版本
pcre 需要升级到8.3以上的版本(程序员自己升级的就是这个玩意儿)
相关软件程序自行下载(本人已经具备)
三、安装操作步骤
首先解决程序员说的升级失败的问题;
1、当前pcre 7.2 版本,程序员自行下载了pcre8.31版本,并且进行了编译安装; 但是重启php-fpm和nginx之后,查看phpinfo信息还是7.2版本
一开始我拿到服务器和接到程序员的信息之后,立即进行查看,果然是这样;经过排查后发现原来php默认使用的pcre所指向的路径与新安装的版本不相同,简单粗暴处理方式上阵; 卸载已经安装8.31版本,重新编译安装,安装路径直接指向已经存在pcre7.2版本,妈的失败; 没办法,上linux特性解决方法, 卸载并重新安装现有pcre8.31版本,然后使用软链接文件的方式将现有7.2版本的文件替换,我的上天phpinfo终于显示当前版本为8.31版本了; 通知程序员,问题解决
2个小时之后,程序员再次来信息说页面显示不全,一开始我怀疑是他们代码的问题,重新上传一份代码的副本,问题依旧;于是将pcre替换会7.2版本之后问题解决。同时也宣告本次升级失败。 没办法了只能重新安装; 唯一最快解决问题的方法是使用我手上已经存在的版本进行重新安装,于是乎新一轮的卸载安装开始了;
卸载现有版本程序
卸载现有php及其扩展的安装
卸载已经编译安装的pcre
卸载现有mysql版本安装(因为没有卸载之前,编译安装php时,提示找不到mysql路径)
安装正式开始
编译安装现有的扩展:
libxml、openssl、mysql:
这三项的编译安装都是默认进行即可;只是要将路径指向/usr/local/目录下边
编译安装pcre 8.32版本(这是我手上的版本)
./configure --enable-utf8 --enable-unicode-properties --prefix=/usr/local/pcre (我写这个博客的目的主要是为了记录写个命令
编译安装php 5.3版本(随便也就升级到这个版本)
./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-debug --with-libxml-dir=/usr/local/libxml --with-openssl --with-curl --enable-ftp --with-openssl-dir=/usr/local/openssl --with-gd --with-ldap --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql --enable-soap --with-libxml-dir=/usr/local/libxml --enable-zip --with-zlib-dir=/usr/loca/pcre --with-mysql-sock=/data/mysql/mysql.sock --enable-mbstring
安装APC
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
四、问题及解决方法
编译安装php时出现找不到openssl路径的问题
--with-openssl=/usr/local 和 --with-openssl-dir=/usr/local/openssl这两个参数只需指定--with-openssl-dir=/usr/local/openssl即可
编译安装php是出现找不到msyql路径的问题
卸载现有rpm包安装的mysql,重新编译安装之后问题解决