先日、Macが不調で再インストール+TimeMachieで復元しました。無事に元通りになり、Macの不調も改善されたのですがVS Codeを使ってみるとphpcsがエラーを吐いて途中で止まるようになってしまいました。
エラーは下記です。
An error occurred during processing; checking has been aborted. The error message was: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /Users/*****/.composer/vendor/squizlabs/php_codesniffer/Standards/WordPress/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php on line 280
この意味はtrim()
の最初のパラメーターにnull
を渡すのはdeprecated(廃止)
だということです。deprecated
がでるということは今の環境に合わないコードだということですが、
- パソコンを再インストールするまでは普通に動いていた
- phpcsはPHPで動いている
- 作業環境を再構築するときにHomebrewを最新にアップデートした
という点から、
「ひょっとしてPHPのバージョンが8になってる??」
と思ってコマンドとを叩いてみると、下記のような結果に。
php -v
PHP 8.1.1 (cli) (built: Dec 17 2021 23:49:52) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.1, Copyright (c) Zend Technologies
with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies
やはりMacで動いているPHPのバーションは8になっていました。Homebrewを最新にアップデートするとPHPも最新のものがインストールされてしまうようです。
「ひょっとしてphpcsのWordPress用のcodesnifferがまだ8に対応していないのかも…」
と思いMacのPHPのバージョンを下げることにしました。
PHP7.4をインストール
まずはどのPHPがインストールされているか調べますbrew search php7
とすればPHP7系でインストールできるパッケージが表示されます。
brew search php7
==> Formulae
php@7.2 php@7.3 php@7.4 php ✔
インストールされているパッケージになチェックがつきます。phpにチェックが付いていますが恐らくこれがhomebrewで標準でインストールされているPHPだと思います。
今回はPHP7.4をインストールしました。
brew install php@7.4
インストールが終了したら brew list
で確認。下記のようにphp@7.4
があればインストール完了です。
brew list
==> Formulae
apr ... 省略 ... php@7.4 ....
PHP7.4を使うように設定
次にシェルの設定ファイルに環境変数PATHを追加します。
※これはzshの書き方になっています。bashの人は一番最後の部分を.bashrcとしてください。
echo 'export PATH=/usr/local/opt/php@7.4/bin:$PATH' >> ~/.zshrc
あとはsourceコマンドで追加した環境変数をシェルに反映させます。
source ~/.zshrc
リンクを変える
ここから追記です(2022年5月13日)。
M1 Macを買って環境をセットアップしたときにこれだけでは上手くいきませんでした。どうやってもPHP8.0になってしまいます。
あれこれ調べて、下記の記事のようにリンク先を切り替えてみると上手くいきました。
Add and install PHP to macOS Monterey 12 with Homebrew – WP Beaches
brew unlink php && brew link --overwrite --force php@7.4
リンクを書き換えた後、シェルを再起動して確認すると下記のようにPHP7.4になっていました。
php -v
PHP 7.4.27 (cli) (built: Dec 16 2021 18:14:21) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.27, Copyright (c), by Zend Technologies
phpcsのエラーは解決
問題はこれでphpcsのエラーが解決するかですが、結果としてはOKでした!
記事を修正した時点(2022年5月13日)でも、今のWordPressのcodesnifferはPHP8に対応してません。Gitを見てみると、 WordPressCS 3.0.0としてリリースを目指しているようですが、大きな問題がいくつもあり難航しているような印象を受けます。
https://github.com/WordPress/WordPress-Coding-Standards/issues/1877
当面はPHP7.4でいくしかなさそうです。
コメント
この記事へのコメントはありません。