質問: 表題の通りですが上手くできずに困っております。 自宅のPCではAtomを使用しています。そこではphp-cs-fixer-v2.pharをダウンロードしパスを通すことで問題なく使えております。ただ会社のPCのWindowsでのセッティングでハマっています。 以下のエラーが出ます ``` PHP CS Fixer: spawn php-cs-fixer ENOENT. executablePath not found. ``` 色々調べた結果、表題を実現するには大きく2つの方法がある気がします。 1 https://qiita.com/y_murakami88/items/eafec8aa6ee8b09b57d8 はphp.ini-developmentのリネームとcomposerを使う方法 2 https://tech.glatchdesign.com/php-cs-fixer-for-vscode https://monoxa.net/2018/03/%E3%80%90%E5%88%9D%E5%BF%83%E8%80%85%E5%90%91%E3%80%91visual-studio-code%E3%81%A7php-cs-fixer%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/ は単にphp-cs-fixer-v2.pharの絶対パスをphp-cs-fixer.executablePath(setting.json)に貼り付ける方法 上記二つとも被っている部分はありますが現在は2の方で実現しようとしています。 visual studio codeにphpのパスを通すことは成功しているのでphpのファイルを作成してもエラーは出ません。 phpは以下で通りました。 "php.executablePath": "C:/xampp/php/php.exe" しかしphp-cs-fixer-v2.pharの絶対パスが通りません。 "php-cs-fixer.executablePath": "~/.vscode/php-cs-fixer-v2.phar" を入力しても上手くいきません。 ちなみにのphp-cs-fixer-v2.phar絶対パスは C:¥Users¥nakaiy¥.vscode¥php-cs-fixer-v2.phar となっています。 質問が二つあります。 1~/はどういう意味ですか。 2 https://monoxa.net/2018/03/%E3%80%90%E5%88%9D%E5%BF%83%E8%80%85%E5%90%91%E3%80%91visual-studio-code%E3%81%A7php-cs-fixer%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/ のURLの記事で C:\Users\(user name)\.vscode に配置して、Visual Studio Codeのユーザー設定に php-cs-fixer.executablePath": "~/.vscode/php-cs-fixer-v2.phar" を追記します。 と書いていますが、C:\Users\(user name)\.vscodeに配置したのが C:¥Users¥nakaiy¥.vscode¥php-cs-fixer-v2.phar(絶対パス)です。 であれば php-cs-fixer.executablePath": "~/.vscode/php-cs-fixer-v2.phar" ではなく php-cs-fixer.executablePath": "C:/Users/nakaiy/.vscode/php-cs-fixer-v2.phar" というパスを記述するべきではありませんか。場所は特に関係ないきがしますが、、、。 試しましたが全く同じエラーが出ます。ハマる方も多いみたいなので解決策を教えてください。
回答: php-cs-fixer はちょっと使ったこと無いのですが、Windows版でVSCodeの拡張機能を使う場合、Windowsの環境変数にパスを通さないと動作しないものがあります。 C:\xampp\php へのPATH設定が必要かもしれません。 (コマンドプロンプトで `php -v` 等が実行できる状態にする必要があります) 参考: PATHを設定する | PHPインストールと初期設定 > > 1~/はどういう意味ですか。 > > > チルダ記号はホームディレクトリになりますが、Windows環境だとおそらく使えないです。その場合はフルパスで良いかとおもいます。 ホームディレクトリからの相対パスで書くと、同じ設定内容で個々のディレクトリを見に行けるというメリットはありますが、一人しか使わないのであれば相対パスでもフルパスでも構わないです。