PHP5.6→7系、Laravel5.4→5.5への移行アップデートでざっくりやったこと


なぜバージョンアップするのか

PHP7の高速化の恩恵にも預かりたいですが、PHP5.6のサポートが2018年いっぱいで切れるということが一番大きいです。
Laravelへの移行はPHPのバージョンアップに伴ってというところですが、5.5がLTSなので早いとこそれに変えておきたいという面もあります。

大まかに下記のような手順でバージョンアップを進めていきたいと思います。

  1. 現在のコードをPHP7にしても文法的にエラーがないか確認
  2. 実際に開発環境をPHP7にして確認
  3. Laravel5.5用にプロジェクトをアップデート

1. 現在のコードをPHP7にしても文法的にエラーがないか確認

文法チェックツールでコマンドラインからサクッと確認

sstalle/php7cc: PHP 7 Compatibility Checker

php7ccはphp5系(5.3〜5.6)からphp7への移行をサポートしてくれるコマンドラインツールで、移行プロジェクトの文法的なエラーやWarningを教えてくれる。
ただし、現在すでにphp7ccは開発サポートされていないので、phanphpstanなどの別の代替サポートツールを使うのもいいかも。

使い方

# インストール
$ composer global require sstalle/php7cc

# パスを通す
$ export PATH="$PATH:$HOME/.composer/vendor/bin"

# カレントディレクトリ配下をvendor配下を除いて全て文法チェック。結果はjson形式で表示
$ php7cc --except=vendor -o json ./ > result.json

ここで文法的エラーが出るようであれば修正の必要あり。
php7の変更点のマニュアルなどを参考に修正します。
PHP: 下位互換性のない変更点 - Manual

2. 実際に開発環境をPHP7にして確認

php7.xのバージョン選定

実際php7系をインストールする段階なので、7系のどのマイナーバージョンを使用するか決める必要があります。

2018/4/30現在の最新版は7.2で、速度も7.1から改善しているらしいです。
ある程度世間で使われたバージョンの方が好ましい場合もあったりいろいろですが、下記記事などによると7.1の恩恵は大きそうなので、少なくとも7.0よりは7.1を検討した方が良さそうです。今回は7.1をインストールしてみたいと思います。
それでもphp 7.1以降を使うべき7つの理由 - Qiita

php7.1のインストール方法

CentOS7系の標準リポジトリのPHPバージョンは5.4で、標準リポジトリに7系は入っていないので、epel、remiを追加する必要があります。
最初からepel、remiといったリポジトリが入ってる場合もあるので、yum repolistで確認します。

参考:CentOS6/CentOS7にPHP5.6/PHP7をyumでインストール - Qiita

# epelを追加
$ yum install -y epel-release

# remiを追加
$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# php7.1、その他Laravel5.5の要件となるモジュールをインストール
$ yum install -y --enablerepo=remi,remi-php71 php php-devel php-mbstring php-pdo php-xml

# php7.1のインストールを確認
$ php -v
PHP 7.1.17 (cli) (built: Apr 25 2018 08:30:10) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

# Laravel5.5の要件のphpモジュールの確認
$ php -m
mbstring
openssl
PDO
tokenizer
xml
(他略)

実際にPHP7.1がインストールできたので、この段階で一度Laravelアプリケーションでのテストやブラウザ確認を行ってもいいかもしれません。

3. Laravel5.5用にプロジェクトをアップデート

アップグレードガイドを読む

PHP7.1では最新版のLaravel5.6にアップグレードすることができますが、今回はLTSの5.5にアップグレードしていきます。
丁寧にアップグレードガイドが用意されているので読んでおきます。5.4からの変更点は大したものはなく、工数1時間程度らしいです。(これが5.1からのアップグレードとかだと大変なので、Laravelは細かくマイナーバージョンアップした方がいいかもしれないです)
アップグレードガイド 5.5 Laravel

composer.jsonをアップデート

5.4からは大きな変更点はそんなにないので、composer.jsonの変更点だけですむ場合も多いのではないでしょうか。composer.jsonは基本的にはlaravelのgithubの5.5ブランチの通りに書いていけばいいのではないかと思いますが、自分で変更を加えた点についてはその限りではないので注意。
laravel/composer.json at 5.5 · laravel/laravel

追加で入れているライブラリがあればPacakgistも確認して、使用するPHPバージョンに適した記述でcomposer.jsonを修正します。
laravel/laravel - Packagist

バージョニングの指定の仕方をよく忘れるので引用。

指定 対象となるバージョン
1.* 1.x.x
1.2.* 1.2.x
~1.1 1.1以上、2未満
~1.1.5 1.1.5以上、1.2未満
^1.1 1.1以上、2未満
^1.1.5 1.1.5以上、2未満
>=1.2 1.2以上
~2.0,>=2.6 2.0以上3未満 かつ 2.6以上
>=2.0|3.0-beta 2.0以上 または 3.0beta版

[初心者向け] composerのバージョン指定方法 | QUARTETCOM TECH BLOG

以上!