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

More than 1 year has passed since last update.


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

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

以上!