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框架Phpbean说明
Jan 10 PHP
PHP 在线翻译函数代码
May 07 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
php防止sql注入代码实例
Dec 18 PHP
php下pdo的mysql事务处理用法实例
Dec 27 PHP
CodeIgniter删除和设置Cookie的方法
Apr 07 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
php array_values 返回数组的值实例详解
Nov 17 PHP
几行代码轻松实现PHP文件打包下载zip
Mar 01 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 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
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
python安装twisted的问题解析
2018/08/21 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
python 读取.nii格式图像实例
2020/07/01 Python
Numpy数组的广播机制的实现
2020/11/03 Python
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
应届毕业生就业自荐信
2013/10/26 职场文书
自荐信需注意事项
2014/01/25 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
商铺租房协议书范本
2014/12/04 职场文书
审美与表现自我评价
2015/03/09 职场文书
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL
Oracle中日期的使用方法实例
2022/07/07 Oracle
源码安装apache脚本部署过程详解
2022/09/23 Servers