[PHP] フォルダ内のphp構文チェックを一括で行うコマンド

2022年5月22日

テクノロジー

eyecatch PHPは大得意なプログラム言語、ペチパーユゲタです。 今このブログを書いている時点でのPHPの安定メジャーバージョンは、8です。 数年バージョン7を使ってきて、バージョンを8にしたら、何が起こるか、試しにやってみたところ、 以前作ったシステムは無事に動くことはできましたが、Deprecaredメッセージを表示してみるモードに切り替えてみると、 大量のアラートメッセージが表示されました。

PHP8にアップデートで出たアラートの一覧を取得するコマンド

とりあえず、システム内に大量に(php7で構築した)PHPがあるので、問題のある(Deprecaredアラートが出る)PHPファイルを抽出したいと思います。 次のコマンドをroot階層で実行すると・・・ # コマンド実行
$ find . -name '*.php'| xargs -I{} php -l {} | grep -v 'No syntax errors' > php-error.txt
# 結果
Deprecated: Required parameter $name follows optional parameter $type in ./page/myntinc/contents/blog_old1/php/group.php on line 25 Deprecated: Required parameter $max_count follows optional parameter $uid in ./api/sns/php.bak2/crawl.php on line 384 Deprecated: Required parameter $max_count follows optional parameter $uid in ./api/sns/php.bak2/crawl.php on line 470 Deprecated: Required parameter $end_cursor follows optional parameter $graphql in ./api/sns/php.bak/account.php on line 138 Deprecated: Required parameter $end_cursor follows optional parameter $sharedData in ./api/sns/php.bak/account_bak.1.php on line 133
こんな感じで、ファイル別と問題箇所別に1行ずつ、php-error.txtというファイルを作って、リストアップしてくれます。 行の後半に書かれている対象のファイルパスと行数が、親切で便利ですね。 findコマンドでphpファイルを一括抽出して、正常なファイルの場合に"No syntax error"と表示されるのを除外して、そのチェックした対象ファイルと問題がある場合はその行数(ファイル内に複数問題があれば、複数行)記述されます。 ちなみに、"Required parameter $name follows optional parameter $あ"というのは、functionの送値定義の箇所で、デフォルト値を記述が必須になった仕様で発生しています。 function hoge($a){ ... } ↓次のように修正 function hoge($a=''){ ... }

PHP8にアップデートに関して

https://kinsta.com/jp/blog/php-8/ このサイトに、アップデートの内容が書かれているので、ペチパー諸君は、一読しておきましょう。 Deprecared以外に、仕様が変わっている場合は、システムがクラッシュする可能性もありますからね。 何はともあれ、一旦PHPコマンドの-lオプションで構文チェックして、エラー内容を調べて対応するという程度でも全然いいし、 スピード感はそっちの方が早いかもしれませんね。 さて、phpの自分コーディングルールをPHP8用にアップデートするとしますか。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ