WangMao's Blog
原 Secret Blog,坐标深圳,码农

PHP 7.0.9 升级 PHP 7.1.5

TOC

  1. 配置
  2. 评估影响范围
  3. 升级
  4. 优化
  5. 重启 PHP-FPM

最近公司分配了一个项目给我,时间相对充裕,所以也就直接用 Laravel 5.6 练手了。参照慕课网实战课程「Laravel 快速开发简书」和 Laravel China 社区出的 「Web 开发实战入门 (Laravel 5.5)」以及 Laravel China 社区翻译的「Laravel 5.6 中文文档」直接开怼。

上线前服务器资源成了一个问题,因为这个项目并没提到正式流程中,所有曲线救国,直接上线在官网的服务器。

配置

  • 阿里云 2 核 4 GB * 3(两台生产使用SLB,一台测试)
  • CentOS 7.4 x86_64
  • Nginx 1.12 + PHP 7.0.9

此次升级共三台服务器,两台生产环境和一台测试环境。

查看 Laravel 5.6 服务器要求 PHP 版本为 PHP >= 7.1.3,因为开发环境装的 7.1.5,所以就直接上 7.1.5 了。

评估影响范围

首先,生产环境还运行着一个官网,不过流量可以忽略不计,所以短暂的宕机是可以接受的,不然我要等到晚上才能升级。

连上服务器,根据需求判断是否需要备份之前的数据。是否安装了其他拓展(Redis、Mencache、Swoole、Yaf 等)有的话需要将 php.ini 文件备份下来。

由于官网 PHP 一直没用过,也没装过什么拓展,所以也就直接覆盖升级了。

升级

注意:是覆盖升级!并非多版本切换。

首先需要找到 PHP 老版本的安装目录。一般路径为 /usr/local/php,现在需要获取当初安装时的配置情况。

使用命令:

1
2
$ php -i | grep configure | sed -e "s/Configure Command => //; s/'//g"
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-gd --with-iconv --with-zlib --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-pear --with-gettext --enable-session --with-mcrypt --with-curl --with-jpeg-dir=/usr --with-freetype-dir=/usr

若提示 command not found: php 则需要进入到 /usr/local/php/bin/ 使用 ./php 来执行命令。

将以上配置给复制下来,保存好。

然后下载对应升级的 PHP 版本,这里我选择 7.1.5 如果需要其他版本的只需要在下面命令修改对应版本即可。

1
2
3
4
$ cd ~
$ wget -c http://cn2.php.net/get/php-7.1.5.tar.gz/from/this/mirror -O php-7.1.5.tar.gz
$ tar zxvf php-7.1.5.tar.gz
$ cd php-7.1.5

解压完成,现在开始配置 PHP,这时需要复制上刚刚保存的 ./configure 命令。

1
2
$ ./configure  --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-gd --with-iconv --with-zlib --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-pear --with-gettext --enable-session --with-mcrypt --with-curl --with-jpeg-dir=/usr --with-freetype-dir=/usr
$ make && make install

如果命令有提示 Permission denied 请使用 sudo 来运行命令。

优化

至此,升级已经完成了。但是仍然有优化的地方。

增加或替换 /usr/bin/ 目录下相关 PHP 的命令脚本。

1
2
3
4
5
6
$ cd /usr/local/php
$ cp -f php phpize php-config php /usr/bin/
$ php -v
PHP 7.1.5 (cli) (built: Jun 5 2017 18:00:45) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

重启 PHP-FPM

现在需要将 php-fpm 重启使其生效。命令:

1
2
$ killall php-fpm
$ sudo /usr/local/php/sbin/php-fpm