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安装攻略:常见问题解答(一)
Oct 09 PHP
php printf输出格式使用说明
Dec 05 PHP
支持中文的php加密解密类代码
Nov 27 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 PHP
基于PHP遍历数组的方法汇总分析
Jun 08 PHP
php中有关合并某一字段键值相同的数组合并的改进
Mar 10 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
PHP Web木马扫描器代码分享
Sep 06 PHP
PHP防止刷新重复提交页面的示例代码
Nov 11 PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 PHP
php成功操作redis cluster集群的实例教程
Jan 13 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详细彻底学习Smarty
2008/03/27 PHP
destoon官方标签大全
2014/06/20 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
2017/11/24 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
javascript实现抢购倒计时程序
2019/08/26 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
Python模块包中__init__.py文件功能分析
2016/06/14 Python
python+django加载静态网页模板解析
2017/12/12 Python
Python 变量类型详解
2018/10/10 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
创业计划书中包含的9个方面
2013/12/26 职场文书
咖啡店自主创业商业计划书
2014/01/22 职场文书
给朋友的道歉短信
2015/05/12 职场文书
离婚民事起诉状
2015/08/03 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
7个关于Python的经典基础案例
2021/11/07 Python