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的array_diff()函数在处理大数组时的效率问题
Nov 27 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
基于PHP编程注意事项的小结
Apr 27 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
May 08 PHP
php通过sort()函数给数组排序的方法
Mar 18 PHP
php实现无限级分类(递归方法)
Aug 06 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
thinkphp实现图片上传功能
Jan 13 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
PHP实现的杨辉三角求解算法分析
Mar 11 PHP
PHP切割汉字的常用方法实例总结
Apr 27 PHP
php传值和传引用的区别点总结
Nov 19 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的输入输出流
2007/02/14 PHP
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
浅谈PHP中的
2016/04/23 PHP
php 数组元素快速去重
2017/05/05 PHP
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
2016/10/21 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
jQuery实现增删改查
2020/12/22 jQuery
python实现贪吃蛇游戏
2020/03/21 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
求职信模板标准格式范文
2014/02/23 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
机动车交通事故协议书
2015/01/29 职场文书
会议通知
2015/04/15 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
四群教育工作总结
2015/08/10 职场文书
高中地理教学反思
2016/02/19 职场文书