Centos下升级php5.2到php5.4全记录(编译安装)


Posted in PHP onApril 03, 2015

升级

目前php最新版虽然是php5.5,但出于各种考虑,还是先升到php5.4比较靠谱。
原php使用的是php5.2.10,已经运行了4~5年了,是时候升级了。

5.4最新稳定版是5.4.21(14 Nov 2013发布了5.4.22...)

wget http://cn2.php.net/get/php-5.4.21.tar.gz/from/this/mirror

tar zxf php-5.4.21.tar.gz

cd php-5.4.21

修改源码,如果程序编码是utf-8的,跳过此步骤。

如果你的程序默认是GBK,而且程序中有不少使用htmlspecialchars的,建议直接修改源码,因为5.4默认为utf-8了。用htmlspecialchars输出的都会是空。

ext/standard/html.c

line 372

/* Default is now UTF-8 */

if (charset_hint == NULL)

return cs_utf_8;

--->

/* Default is now UTF-8 */

if (charset_hint == NULL)

return cs_8859_1;

解决htmlspecialchars默认UTF-8的问题。
./configure --prefix=/usr/local/php5.4 --with-zlib --enable-bcmath  --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-sockets  --with-xmlrpc --enable-zip --enable-soap --without-pear --with-mysql --with-mysqli --with-pdo-mysql --enable-ftp --with-jpeg-dir --with-freetype-dir --with-png-dir --enable-fpm --with-fpm-user=www --with-fpm-group=www

较精简的安装参数:
./configure --prefix=/usr/local/php5.4 --enable-fpm --with-mysql

make ZEND_EXTRA_LIBS='-liconv'

make install

-----------------------
把两个默认文件移到正确的地方,php.ini-development或php.ini-production看情况。
cd /usr/local/php5.4/etc/

cp php-fpm.conf.default php-fpm.conf

cp /www/soft/php-5.4.21/php.ini-development   /usr/local/php5.4/lib/php.ini

------------------------------
php-fpm.conf中
listen.allowed_clients = 127.0.0.1前面的;去掉
---------------------

php.ini中

short_open_tag = Off

改为
short_open_tag = On
;date.timezone =

改为
date.timezone = "Asia/Shanghai"

error_reporting = E_ALL

改为
error_reporting = E_ALL & ~E_NOTICE

添加到开机服务列表

cp -f  /www/soft/php-5.4.21/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

chmod 755 /etc/init.d/php-fpm

chkconfig --add php-fpm

chkconfig php-fpm on

启动php-fpm:
service php-fpm start

php升级完成!
------------------------------------------------------
装ZendOpcache,据维护者Laruence称,Zend Opcache, 它是一个以扩展形式提供的PHP的Optmizer, 也会做很多编译优化, 也没有兼容性问题. 相比APC, 也要快7%以上. 不过它不提供apc_store用户数据Cache。如要使用apc的user cache,可以考虑使用APCU或者Laruence的Yac一起搭配使用。
wget http://pecl.php.net/get/ZendOpcache

tar zxf ZendOpcache 

cd zendopcache-7.0.2/

/usr/local/php5.4/bin/phpize 

./configure --with-php-config=/usr/local/php5.4/bin/php-config

make

make install

Installing shared extensions:     /usr/local/php5.4/lib/php/extensions/no-debug-non-zts-20100525/

php.ini里直接加到底部,官方建议参数
zend_extension= /usr/local/php5.4/lib/php/extensions/no-debug-non-zts-20100525/opcache.so

opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=4000

opcache.revalidate_freq=60

opcache.fast_shutdown=1

opcache.enable_cli=1

opcache.save_comments=0

opcache.enable_file_override=1

service php-fpm reload

这里phpinfo()里就有with Zend OPcache v7.0.2,以及不少相关的参数了。

这样php5.4就算升级完了。
--------------------------------

可能碰到的错误:

启动php-fpm失败

Starting php-fpm /etc/init.d/php-fpm: line 53: 12483 Segmentation fault      $php_fpm_BIN --daemonize $php_opts

failed

同时安装了APC和Zend opcache导致冲突,有了Zend opcache,可以不用装APC了。
PHP 相关文章推荐
PHP个人网站架设连环讲(一)
Oct 09 PHP
发布一个用PHP fsockopen写的HTTP下载的类
Feb 22 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
Jun 26 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
46 个非常有用的 PHP 代码片段
Feb 16 PHP
php反射类ReflectionClass用法分析
May 12 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
php微信公众号开发之二级菜单
Oct 20 PHP
PHP goto语句用法实例
Aug 06 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 #PHP
php实现专业获取网站SEO信息类实例
Apr 02 #PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 #PHP
php实现从上传文件创建缩略图的方法
Apr 02 #PHP
php调用KyotoTycoon简单实例
Apr 02 #PHP
PHP中数据类型转换的三种方式
Apr 02 #PHP
php在apache环境下实现gzip配置方法
Apr 02 #PHP
You might like
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php限制文件下载速度的代码
2015/10/20 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
解密效果
2006/06/23 Javascript
flash javascript之间的通讯方法小结
2008/12/20 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
用Python计算三角函数之acos()方法的使用
2015/05/15 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
在python 中实现运行多条shell命令
2019/01/07 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
毕业生文员求职信
2013/11/03 职场文书
产品生产计划书
2014/05/07 职场文书
经典演讲稿汇总
2014/05/19 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
消防安全宣传口号
2014/06/10 职场文书
5s标语大全
2014/06/23 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
辞职信格式范文
2015/05/13 职场文书
检察院起诉意见书
2015/05/20 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
ztree+ajax实现文件树下载功能
2021/05/18 Javascript