Composer の設定を同期してしまう

タイトルに PhpStorm と書いたが私は今 IntelliJ IDEA Ultimate を使用しているのでそちらで再現した問題である。 だが検索すると PhpStorm でも同様の問題に遭ったという投稿が見受けられるので同様と思われる。

PhpStorm (IntelliJ IDEA Ultimate) では PHP language level (PHP バージョン) を設定することができる。 これによって例えば PHP 7.1 などに設定して PHP 7.1 の文法 (nullable なタイプヒンティングなど) を使ってもエディタ上でエラーにならない。 だが、一旦 IDE を再起動してしまうと何故か元に戻ってしまい文法エラー表示されてしまう。 これは何なのだろう、と調べてみたがデフォルトで composer.json の設定と同期されてしまうからだった。

対処

以下のどちらかを実施する:

1. composer.json の言語レベルを見直す

composer.json の以下の箇所を使用したい PHP バージョンに書き換えればよい:

"require": {
    "php": ">=7.1",
}

2. composer.json と IDE 設定の同期を止める

これに関しては IntelliJ のサポートフォーラムに投稿があった のでこの通り実施する。

That looks like IDE is synchronising these settings with your composer.json. This happens on project opening or when that file change is detected. "Settings/Preferences | Languages & Frameworks | PHP | Composer" -- uncheck appropriate option there ("Synchronize IDE Settings with composer.json").

ということで Settings -> Preference -> Languages & Frameworks -> PHP -> Composer の「Synchronize IDE Settings with composer.json」という設定を外せばよい。