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 相关文章推荐
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
PHP输出缓冲控制Output Control系列函数详解
Jul 02 PHP
php metaphone()函数的定义和用法
May 15 PHP
Docker 如何布置PHP开发环境
Jun 21 PHP
CI框架入门之MVC简单示例
Nov 21 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
PHP上传文件及图片到七牛的方法
Jul 25 PHP
PHP命名空间与自动加载类详解
Sep 04 PHP
PHP使用函数用法详解
Sep 30 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
js判断当前浏览器类型,判断IE浏览器方法
2014/06/02 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
python3如何将docx转换成pdf文件
2018/03/23 Python
python调用百度语音REST API
2018/08/30 Python
python打包成so文件过程解析
2019/09/28 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
爱情检讨书大全
2014/01/21 职场文书
离婚代理词范文
2015/05/23 职场文书
周一问候语大全
2015/11/10 职场文书
车辆挂靠协议书
2016/03/23 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
alibaba seata服务端具体实现
2022/02/24 Java/Android
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸