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 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
PHP flush()与ob_flush()的区别详解
Jun 03 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 PHP
php中的mongodb select常用操作代码示例
Sep 06 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
typecho插件编写教程(四):插件挂载
May 28 PHP
php简单smarty入门程序实例
Jun 11 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
php发送http请求的常用方法分析
Nov 08 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 PHP
php实现的生成排列算法示例
Jul 25 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
PHP 引用是个坏习惯
2010/03/12 PHP
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
javascript类型转换示例
2014/04/29 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
在Angular中使用JWT认证方法示例
2018/09/10 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
聊聊python中的循环遍历
2020/09/07 Python
python实现三壶谜题的示例详解
2020/11/02 Python
市优秀教师事迹材料
2014/02/05 职场文书
护士求职信范文
2014/05/24 职场文书
世界读书日的活动方案
2014/08/20 职场文书
明星邀请函
2015/02/02 职场文书
小学班主任研修日志
2015/11/13 职场文书
投资入股协议书
2016/03/22 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
PHP正则表达式之RCEService回溯
2022/04/11 PHP
PYTHON InceptionV3模型的复现详解
2022/05/06 Python
Python使用Web框架Flask开发项目
2022/06/01 Python