linux php升级到7.0,从 PHP 7.0 升级到 PHP 7.1

在 PHP 7.0 发布一年之后,终于看到 PHP 7.1 稳定版发布,有不少新特性,迫不及待地想尝试一下这个版本。本文是介绍从 PHP 7.0.5 升级到 PHP 7.1.0,如果是新安装,可以参考这里:http://www.lnmp.cn/installing-php7-mysql57-nginx18-under-centos7.html大同小异

PHP 7.0.5 之前是安装在  /usr/local/php-7.0.5

首先下载源码,我一般都是放在 /usr/local/src 中

[root@lnmp lnmp.cn]# cd /usr/local/src

[root@lnmp src]# wget -c http://cn2.php.net/get/php-7.1.0.tar.gz/from/this/mirror -O php-7.1.0.tar.gz

然后解压并进入解压后的源码目录

[root@lnmp src]# tar -zxvf php-7.1.0.tar.gz

[root@lnmp src]# cd php-7.1.0/

接下来开始安装了,可以先关闭 php-fpm, 也可以不关闭,其实没有关系。

既然是升级,为了不影响现有网站在升级后的正常运行,那就要做到升级后的 configure 和之前的版本基本一致。这就要把之前安装 PHP 的 configure 找出来,如果你忘记了之前的 configure (应该也没有人去记它吧),其实它就在 phpinfo 里边

[root@lnmp php-7.1.0]# php -i | grep configure

Configure Command =>  './configure'  '--prefix=/usr/local/php-7.0.5' '--enable-fpm' '--with-fpm-user=nginx' '--with-fpm-group=nginx' '--with-mysqli' '--with-zlib' '--with-curl' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-openssl' '--enable-mbstring' '--enable-xml' '--enable-session' '--enable-ftp' '--enable-pdo' '-enable-tokenizer' '--enable-zip'

稍作替换就可以得到想要的 configure 命令了

[root@lnmp php-7.1.0]# php -i | grep configure | sed -e "s/Configure Command =>  //; s/'//g"

./configure  --prefix=/usr/local/php-7.0.5 --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo -enable-tokenizer --enable-zip

[root@lnmp php-7.1.0]#

当然也可以从 php-config 命令获取 configure 选项

这个这里要特别提到一下就是,如果之前的 PHP 版本在安装后有用 PECL 或 phpize 新增过扩展的话,如果这些扩展可以加到 configure 里边,尽量加,否则安装后还要重新安装一次这些扩展

开始安装, 安装到 /usr/local/php-7.1.0

[root@lnmp php-7.1.0]# ./configure  --prefix=/usr/local/php-7.1.0 --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo -enable-tokenizer --enable-zip

如果成功的话,可以看到有 Thank you for using PHP.的字样

接着 make

[root@lnmp php-7.1.0]# make

视机子配置不同,编译可能会要点时间。最后是

[root@lnmp php-7.1.0]# make install

至此,PHP 7.1 已经安装基本完成

[root@lnmp php-7.1.0]# /usr/local/php-7.1.0/bin/php -v

PHP 7.1.0 (cli) (built: Dec  5 2016 04:09:57) ( NTS )

Copyright (c) 1997-2016 The PHP Group

Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies

[root@lnmp php-7.1.0]#

下面是配置,为了不影响现有网站的运行,这里将沿用 PHP 7.0 的配置,直接从备份的文件夹拷贝过去

[root@lnmp php-7.1.0]# cp /usr/local/php-7.0.5/lib/php.ini /usr/local/php-7.1.0/lib/php.ini

[root@lnmp php-7.1.0]# cp /usr/local/php-7.0.5/etc/php-fpm.conf /usr/local/php-7.1.0/etc/php-fpm.conf

[root@lnmp php-7.1.0]# cp /usr/local/php-7.0.5/etc/php-fpm.d/www.conf /usr/local/php-7.1.0/etc/php-fpm.d/www.conf

之前有特别提到有用 PECL 或 phpize 新增过扩展的话,因为拷贝过来的  php.ini 中已经引入了那些扩展,在这里要重新安装,否则在重启 php-fpm 时会出现类似警报:

Dec 05 04:18:53 localhost.localdomain php-fpm[11533]: [05-Dec-2016 04:18:53] NOTICE: PHP message: PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php-7.1.0/lib/php/extensions/no-debug-non-zts-20160303/memcached.so' - /usr/local/php-7.1.0/lib/php/extensions/no-debug-non-zts-20160303/memcached.so: cannot open shared object file: No such file or directory in Unknown on line 0

是要重新安装,即便从旧版本中将这些 so 文件拷贝过来也不行,否则会出现不匹配的警告:

Dec 05 05:07:42 localhost.localdomain php-fpm[11672]: [05-Dec-2016 05:07:42] NOTICE: PHP message: PHP Warning:  PHP Startup: memcache: Unable to initialize module

如果已经忘记过安装过什么扩展,可以查看 php.ini 或扩展目录:

[root@lnmp no-debug-non-zts-20151012]# /usr/local/php-7.0.5/bin/php-config --extension-dir

/usr/local/php-7.0.5/lib/php/extensions/no-debug-non-zts-20151012

查看安装了哪些扩展

[root@lnmp php-7.1.0]# ls /usr/local/php-7.0.5/lib/php/extensions/no-debug-non-zts-20151012

memcache.so  memcached.so  opcache.a  opcache.so  pdo_mysql.so

其中 opcache.a  opcache.so 是自带的,其他都是新增的。其他扩展之前怎么安装,现在又怎么重新安装一遍吧,这里不再累述。

配置 php-fpm 启动服务脚本

[root@lnmp php-7.1.0]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm-710.service

命名为 php-fpm-710.service 是为了方便后面升级,网站如果出问题也很方便切换会 php 7.0

修改启动脚本,把里边 prefix 相关的内容用实际路径代替(如果已经是正确的绝对路径,那就不需要修改)

[root@lnmp php-7.1.0]# vim /usr/lib/systemd/system/php-fpm-710.service

PIDFile=${prefix}/var/run/php-fpm.pid

ExecStart=${exec_prefix}/sbin/php-fpm --nodaemonize --fpm-config ${prefix}/etc/php-fpm.conf

修改成

PIDFile=/usr/local/php-7.0.5/var/run/php-fpm.pid

ExecStart=/usr/local/php-7.0.5/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php-7.0.5/etc/php-fpm.conf

在切换到 PHP 7.1.0 之前,先将 php-fpm 关闭

[root@lnmp php-7.1.0]# systemctl stop php-fpm

修改软链:

一个是 /usr/local/php,

[root@lnmp php-7.1.0]# unlink /usr/local/php

[root@lnmp php-7.1.0]# ln -s /usr/local/php-7.1.0 /usr/local/php

一个是 /usr/lib/systemd/system/php-fpm.service :

[root@lnmp php-7.1.0]# unlink /usr/lib/systemd/system/php-fpm.service

[root@lnmp php-7.1.0]# ln -s /usr/lib/systemd/system/php-fpm-710.service /usr/lib/systemd/system/php-fpm.service

重新加载服务

[root@lnmp php-7.1.0]# systemctl daemon-reload

好了之后启动 php-fpm

[root@lnmp php-7.1.0]# systemctl start php-fpm

查看状态

[root@lnmp php-7.1.0]# systemctl status php-fpm -l

● php-fpm.service - The PHP FastCGI Process Manager

Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)

Active: active (running) since Mon 2016-12-05 05:31:22 UTC; 9s ago

Main PID: 17367 (php-fpm)

CGroup: /system.slice/php-fpm.service

├─17367 php-fpm: master process (/usr/local/php-7.1.0/etc/php-fpm.conf)

├─17368 php-fpm: pool www

└─17369 php-fpm: pool www

已经正常运行,测试下 phpinfo 页面

bfa4c2f315f18b971b09f958b5e9f6d6.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值