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中使用Akismet防止垃圾评论的代码
Jun 10 PHP
基于php验证码函数的使用示例
May 03 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
php mail to 配置详解
Jan 16 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
php防止恶意刷新与刷票的方法
Nov 21 PHP
PHP开启opcache提升代码性能
Apr 26 PHP
使用phpstorm和xdebug实现远程调试的方法
Dec 29 PHP
PHP简单实现无限级分类的方法
May 13 PHP
php微信浏览器分享设置以及回调详解
Aug 01 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 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
文件上传程序的全部源码
2006/10/09 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
php一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
优化javascript的执行速度
2010/01/23 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python实现的简单万年历例子分享
2014/04/25 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
主持人婚宴答谢词
2014/01/28 职场文书
探亲邀请信范文
2014/01/30 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS