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和ACCESS写聊天室(九)
Oct 09 PHP
简单的过滤字符串中的HTML标记
Dec 25 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
解析PHP的session过期设置
Jun 29 PHP
php提高网站效率的技巧
Sep 29 PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
PHP实现简单的模板引擎功能示例
Sep 02 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 PHP
Laravel中获取IP的真实地理位置
Apr 01 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中数组的三种排序方法分享
2012/05/07 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
出纳岗位职责模板
2013/11/27 职场文书
总经理司机职责
2014/02/02 职场文书
工作违纪检讨书
2014/02/17 职场文书
迎七一演讲稿
2014/09/12 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python