PHPのcomposerでvendor/binにシムリンクを張らせない
PHPのパッケージ管理システムのcomposerでinstallしたパッケージに
バイナリやスクリプトが含まれていた場合に、Windows以外だと、
bin-dir(デフォルト: vendor/bin) で指定されたディレクトリにシムリンクが張られてしまう。
例えばphpunitのように、
phpunit/composer.json at master · sebastianbergmann/phpunit · GitHub
"bin": [ "phpunit" ],
と"bin"の指定があるものをcomposerでインストールした場合。
シムリンクってwebサービス運用上まれによく困ることがある。
(そんなことないと思いたいけど、そういうことが、ある。)
そんなときは、composerのconfigの設定を変えるとシムリンクではなく実体にすることができる。
以下のように "bin-compat" : "full" を指定してやる(デフォルト: "auto")
{ ... "config": { "bin-compat": "full" }, .... }
composerの上記挙動は↓の installBinaries メソッドあたりを読むと分かる
composer/BinaryInstaller.php at master · composer/composer · GitHub