php7ccのすすめ

背景

php5をphp7にバージョンアップする案件とphp5をphp8にバージョンアップする案件があり、出来るだけツールや自動化の力を借りたいと調べていたところ、php7ccというツールが導入が簡単かつ使いやすかったので、まとめてみました。

php5→php8についても、いったんphp7に上げてから8に上げることによって手間を削減することができます。

php7→php8についてはこの記事がとても参考になりました!

本番環境のPHPバージョンを7.3から8.0に上げてみた | GRIPHONE ENGINEER'S BLOG
Studio MGCMから提供されているマジカミのサーバーで動いているPHPのバージョンを7.3.11から8.0.13にアップデートしたので、そこで得た知見を書いていこうと思います。

php7ccとは

php7cc は、PHP 5.3 ~ 5.6 から、PHP 7への移行を容易にするためのコマンドラインツールです。
問題の可能性があるファイル名、行番号、短い問題の説明を含むレポートを生成してくれます
(コードを自動的に修正するものではありません)

注意点

  • 都度最新のcomposer公式サイトをご確認ください。特に②のハッシュ値部分はモジュールが更新されるたびに変わります。
    Composer
    A Dependency Manager for PHP
  • phpがインストール済、またはxamppなどphpを含んでいる環境であること

今回はwindows端末で作業していることを前提に進めますが、もちろんlinux端末でも導入可能です。

①composerインストール

まずはcomposerのインストールから始めます。

windows powershell起動→phpのパスが通っているところまでディレクトリ移動

#phpでcomposerをインストールしてくれるcomposer-setup.phpを公式よりダウンロード
php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”

#composer-setup.phpが正規のものか確認(ハッシュ値で正規のcomposer-setup.phpと同じものか確認しています。その為都度変わるハッシュ値を公式サイトでご確認下さい)
php -r “if (hash_file(‘sha384’, ‘composer-setup.php’) === ’55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”

#composer-setup.phpを使い、composerをインストール
php composer-setup.php

#composer-setup.phpの削除
php -r “unlink(‘composer-setup.php’);”

②php7ccのインストール

composer global require sstalle/php7cc

直でソースをダウンロードする方は下記よりダウンロードできます。
https://github.com/sstalle/php7cc/releases

③php7cc実行

php -d memory_limit=-1 .\php7cc.phar .\test\

最後にphp7ccの実行です。置き換え箇所のリストと総数が出力されます。

リストは長すぎて省きますが、下記がそのサマリになります。置き換え必須と推奨箇所さえ置き換えれば大半は動くようになります。

Checked 832 files in 34.940 seconds
置き換え必須11か所(Error),置き換え推奨22か所(Warn)

 

その他メモ

php7で置き換えなければいけない関数

mysql関連の関数

mysql 関連の関数は全て mysqli のメソッドに置き換える必要があります。
またその際に mysql への接続情報を渡す必要があります。
例 :

$q = mysql_escape_string( $q );

$mysqli = new mysqli(‘サーバ名’, ‘ユーザー名’,’パスワード’, ‘DB名’);
$q = $mysqli->real_escape_string( $q );

set_magic_quotes_runtime()

これは削除(コメントアウト可)すればOKです。
例 :

set_magic_quotes_runtime(true);

// set_magic_quotes_runtime(true);

Smarty templates

コメント