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数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
Oct 29 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
Dec 29 PHP
与文件上传有关的php配置参数总结
Jun 14 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
解密ThinkPHP3.1.2版本之模板继承
Jun 19 PHP
完善CodeIgniter在IDE中代码提示功能的方法
Jul 19 PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 PHP
thinkPHP实现签到功能的方法
Mar 15 PHP
PHP实现微信小程序人脸识别刷脸登录功能
May 24 PHP
Laravel 框架返回状态拦截代码
Oct 18 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
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
php如何获取Http请求
2020/04/30 PHP
PHP7 新增功能
2021/03/09 PHP
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
js原型链原理看图说明
2012/07/07 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
Python合并字符串的3种方法
2015/05/21 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
Python 类的特殊成员解析
2018/06/20 Python
使用python实现简单五子棋游戏
2019/06/18 Python
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
英语自荐信常用语句
2013/12/13 职场文书
关于打架的检讨书
2014/01/17 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
2014年团队工作总结
2014/11/24 职场文书
优秀班主任申报材料
2014/12/16 职场文书
贷款承诺书
2015/01/20 职场文书
员工离职通知函
2015/04/25 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
篮球赛新闻稿
2015/07/17 职场文书