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&MYSQL服务器配置说明
Oct 09 PHP
杏林同学录(九)
Oct 09 PHP
php 清除网页病毒的方法
Dec 05 PHP
php 无限级缓存的类的扩展
Mar 16 PHP
PHP下常用正则表达式整理
Oct 26 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
深入Memcache的Session数据的多服务器共享详解
Jun 13 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
php利用header函数下载各种文件
Aug 24 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 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
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
python之pandas用法大全
2018/03/13 Python
django框架自定义用户表操作示例
2018/08/07 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
python基于event实现线程间通信控制
2020/01/13 Python
jupyter notebook中新建cell的方法与快捷键操作
2020/04/22 Python
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
应届生.NET方向面试题
2015/05/23 面试题
this关键字的含义
2015/04/08 面试题
个人简历的自荐信
2013/10/23 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
普通话宣传标语
2014/06/26 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
领导欢迎词范文
2015/01/26 职场文书
办公室主任个人总结
2015/02/28 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
SQL Server中锁的用法
2022/05/20 SQL Server