背景
急に php-cs-fixer
が PHP CS Fixer: php general error
という謎のエラーをだし時間が溶けてしまったので、同じ苦しみを味わう人を一人でも減らすための雑なメモ
調査方法
コンソールエラーを確認
Visual Studio CodeでPHPの自動整形を設定を確認すると、
「Help」→「Toggle Developer Tool」
を選択することでVSCode上のコンソールエラーが確認できるのでそちらを確認。
ここで様々なパターンがありそうですが、
僕の場合は以下のバージョン違いのエラーが出ていました。
PHP needs to be a minimum version of PHP 5.6.0 and maximum version of PHP 8.0.*.Current PHP version: 8.0.0.PHP CS Fixer is not able run on PHP 8.0.0 due to bug in PHP tokenizer (https://bugs.php.net/bug.php?id=80462).Update PHP version to unblock execution.
phpbrewでPHPのバージョンを7.4に戻す
(Mac)phpbrewでPHPのバージョンを切り替えるなどを参考にphpのバージョンを戻して、再度調整するもなぜか同じエラーが出続けていました。
ターミナルのphpバージョンとVSCodeのphpバージョンはずれることがあるようです。(詳細は調べていないですが。。。)
気合でVSCode側のphpバージョンを指定
- 「command + ,」で設定を開き「php」で検索
- 「PHP › Validate: Executable Path」の「setting.jsonで編集」をクリック
-
"php.validate.executablePath": "/Users/sakuraiyuji/.phpbrew/php/php-7.4.16/bin/php",
を設定する
最後に
強制的にVSCodeのphpのバージョンを指定しているためおそらく方法としてはベストではない気がしており、今後phpのバージョン上げたくなった際に苦労しそうな予感がメチャしています。。。笑
何かいい回避方法をご存知の方がいらっしゃれば教えていただけるととても助かります。