LoginSignup
1
0

More than 5 years have passed since last update.

VisualStudioCodeで「phpcs: Unexpected token P in JSON at position 0」というエラーの対処法

Posted at

久しぶりにPHPのコードを触ったところ、VisualStudioCodeに入れていたphpcsが動作しないことに気づきました。
ファイルを開いたときに「phpcs: Unexpected token P in JSON at position 0」というエラーが出て
phpcsが動作してくれないのです…
PSR-2に準拠しないコードはレビュー通しまへんでー、と言った本人はなぜかこんなところでちょっと苦戦してました…
前は動いていたのに…
調べてもあまり情報がなかったのでお役に立てれば。

環境

名前 バージョン
PHP 7.1.8
PHP_CodeSniffer 3.0.2
VS Code 1.16.1
VS Code phpcs 0.7.0

エラー内容

VisualStudioCodeでPHPのファイルを開くと以下のメッセージが表示され、
phpcsが動作しませんでした。

phpcs: Unexpected token P in JSON at position 0

解決法

結論からいうと、PHPライブラリが読み込めていないなどの理由でPHPコマンドでWarningが出ていると、
件のエラーになります。

なのでWarningを出さないよう環境を直す必要があります。

$ php --version
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/opt/php71-imagick/imagick.so' - dlopen(/usr/local/opt/php71-imagick/imagick.so, 9): Library not loaded: /usr/local/opt/imagemagick/lib/libMagickWand-7.Q16HDRI.3.dylib
  Referenced from: /usr/local/opt/php71-imagick/imagick.so
  Reason: image not found in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/usr/local/opt/php71-imagick/imagick.so' - dlopen(/usr/local/opt/php71-imagick/imagick.so, 9): Library not loaded: /usr/local/opt/imagemagick/lib/libMagickWand-7.Q16HDRI.3.dylib
  Referenced from: /usr/local/opt/php71-imagick/imagick.so
  Reason: image not found in Unknown on line 0
PHP 7.1.8 (cli) (built: Aug  7 2017 15:02:45) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.8, Copyright (c) 1999-2017, by Zend Technologies
    with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans

imagick関連でWarningのメッセージが出力されています。
もちろんphpcsコマンドを実行してもWarningが出ます。

$ phpcs --version
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/opt/php71-imagick/imagick.so' - dlopen(/usr/local/opt/php71-imagick/imagick.so, 9): Library not loaded: /usr/local/opt/imagemagick/lib/libMagickWand-7.Q16HDRI.3.dylib
  Referenced from: /usr/local/opt/php71-imagick/imagick.so
  Reason: image not found in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/usr/local/opt/php71-imagick/imagick.so' - dlopen(/usr/local/opt/php71-imagick/imagick.so, 9): Library not loaded: /usr/local/opt/imagemagick/lib/libMagickWand-7.Q16HDRI.3.dylib
  Referenced from: /usr/local/opt/php71-imagick/imagick.so
  Reason: image not found in Unknown on line 0
PHP_CodeSniffer version 3.0.2 (stable) by Squiz (http://www.squiz.net)

なので、
php71-imagickはほとんど使用していないので削除しました。

$ brew uninstall php71-imagick
$ rm -f /usr/local/etc/php/7.1/conf.d/ext-imagick.ini
$ php --version
PHP 7.1.8 (cli) (built: Aug  7 2017 15:02:45) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.8, Copyright (c) 1999-2017, by Zend Technologies
    with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans

Warningが消えました。
この状態で再度VisualStudioCodeでPHPファイルを開くとエラーは出ず、正常にphpcsが動作するようになりました。

今回はphp71-imagickをアンインストールしましたが、
Warningを出ないようにすればOKです。

参考

GitHubのissue で同様の事象が報告されていましたが、
自分の場合は該当しませんでした。
違うパターンではもしかしたら上記のイシューも役にたつかもしれません。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0