PHP5.6がEOL目前!php7marでプロジェクトのチェックを

November 14, 2018

PHP 5.6 2018 年末に EOL(End of Life)を迎えるにあたりまして、皆様におかれましては滞りなく PHP 7.x への移行はお済みでしょうか。そうで無い方はお急ぎください。ということで、移行の最初のステップにザッとプロジェクト全体をチェックできる PHP 7 Migration Assistant Report(php7mar) のご紹介。php7mar は PHP5 から PHP7 への移行をアシストするコマンドラインツールとのこと。

試してみる

git clone git@github.com:snize/drupal-php7mar.git
cd drupal-php7mar

今回は Lando という Docker ベースの開発環境構築ツールを使いました。 Lando をインストールしない場合は以下はスキップしてテストからでも OK。

lando start
lando composer install
lando drush site:install --sites-subdir=default demo_umami --db-url=mysql://drupal8:drupal8@database/drupal8 -y

テスト

では、今回のために web/modules/custom 以下に雑に作成したカスタムモジュールをテストする。

# 準備
composer install
mkdir reports
# テスト
php vendor/alexia/php7mar/mar.php -f="web/modules/custom" -r="reports" -x="php,twig,module"

すると reports 以下に Markdown 形式のレポートが作成されたはず。

https://github.com/snize/drupal-php7mar/blob/master/reports/2018-11-13%2020.34.12%20custom.md


2018-11-13T20:34:12+09:00 Scanning /Users/snize/dev/github/drupal-php7mar/web/modules/custom Including file extensions: php,twig,module Processed 38 lines contained in 2 files. Processing took 0.10889911651611 seconds.

critical

/Users/snize/dev/github/drupal-php7mar/web/modules/custom/php5legacy/php5legacy.module

  • deprecatedFunctions
  • Line 27: $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

nuance

/Users/snize/dev/github/drupal-php7mar/web/modules/custom/php5legacy/php5legacy.module

  • foreachByReference
  • Line 29: foreach ($array as &$val) {

このようにcriticalnuance(なぜ warning では無いんだろう?)のように深刻度別にレポートが出力される。

まとめ

ということで、実際に PHP5.6 から PHP7.1 へのマイグレーションで利用して良い感じだったので共有してみました。PHP 7 Compatibility Checker(php7cc) no longer supported とのことで利用を見送りました。


Profile picture

Webのフロントエンドからバックエンド、プロトタイピングからプロダクションまで。定額の開発サービスも。詳しくはAboutページで。