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基础知识:函数基础知识
Dec 13 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
PHP循环函数使用介绍之PHP基础入门教程
Sep 21 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
迁移PHP版本到PHP7
Feb 06 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
php单链表实现代码分享
Jul 04 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
PHP实现的文件操作类及文件下载功能示例
Dec 24 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
Referer原理与图片防盗链实现方法详解
Jul 03 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
Jul 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
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
php 变量定义方法
2009/06/14 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
php常用hash加密函数
2014/11/22 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
详解Vue CLI 3.0脚手架如何mock数据
2018/11/23 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
python远程登录代码
2008/04/29 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
Python的collections模块真的很好用
2021/03/01 Python
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
小学生安全保证书
2014/02/01 职场文书
土木工程师职业规划范文
2014/03/07 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
毕业生个人总结
2015/02/28 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js