Composer とても便利ですよね。
composer global require を使えばユーザーグローバルにもインストールできるので、phpunit などのインストールに pear の代わりに使えます。
がしかし、phpenv で複数の php を切り替えられるようにしていても composer global だと $HOME/.composer/vendor にインストールされます。
$ composer global require phpunit/phpunit:\* $ export PATH=$HOME/.composer/vendor/bin:$PATH $ which phpunit ~/.composer/vendor/bin/phpunit
いまのところ Packagist に登録されている phpunit はどのバージョンも Require php >=5.3.3 なので特に困りませんが、 折角なら phpenv で管理しているバージョンごとにインストールされたかったのでプラグインを作りました。
インストール
$ cd ~/.phpenv/plugins $ git clone https://github.com/ngyuki/phpenv-composer.git : $ phpenv rehash $ hash -r
phpenv rehash で phpenv の shims に composer が現れます。
$ which composer /home/your/.phpenv/shims/composer
その実体はプラグインの libexec/composer です。
$ phpenv which composer /home/your/.phpenv/plugins/phpenv-composer/libexec/composer
最初に composer コマンドを実行したときに、phpenv の versions に composer.phar をダウンロードします。
$ phpenv global 5.5.10 $ composer --version Download composer.phar ... #!/usr/bin/env php All settings correct for using Composer Downloading... Composer successfully installed to: /tmp/composer.phar Use it: php /tmp/composer.phar Move composer.phar to /home/your/.phpenv/versions/5.5.10/composer Composer version 604a65cc31f3e5d8a2b96802135ac24434e87678 2014-03-06 09:26:16 $ ll ~/.phpenv/versions/5.5.10/composer/ 合計 984 -rwxr-xr-x 1 your wheel 1004313 3月 7 03:45 2014 composer.phar
composer コマンドの実行時に COMPOSER_HOME
と COMPOSER_CACHE_DIR
が指定されます。
COMPOSER_HOME
は phpenv の versions の中、COMPOSER_CACHE_DIR
は $HOME/.composer のままです。
$ composer config -g home /home/your/.phpenv/versions/5.5.10/composer $ composer config -g cache-dir /home/your/.composer/cache
使用例
composer global require で phpunit などをインストールすると、phpenv の versions の中にインストールされます。
$ composer global require phpunit/phpunit:\* Changed current directory to /home/your/.phpenv/versions/5.5.10/composer : $ phpenv rehash $ hash -r $ phpenv which phpunit /home/your/.phpenv/versions/5.5.10/composer/vendor/bin/phpunit $ phpunit --version PHPUnit 4.0.4 by Sebastian Bergmann.
別のバージョンに切り替えて実行すると、そのバージョンのディレクトリに composer.phar がダウンロードされます。
$ phpenv global 5.3.3 $ composer --version Download composer.phar ... #!/usr/bin/env php Some settings on your machine may cause stability issues with Composer. If you encounter issues, try to change the following: Your PHP (5.3.3) is quite old, upgrading to PHP 5.3.4 or higher is recommended. Composer works with 5.3.2+ for most people, but there might be edge case issues. Downloading... Composer successfully installed to: /tmp/composer.phar Use it: php /tmp/composer.phar Move composer.phar to /home/your/.phpenv/versions/5.3.3/composer Composer version 604a65cc31f3e5d8a2b96802135ac24434e87678 2014-03-06 09:26:16
phpunit なども、そのバージョンのディレクトリにインストールされます。
$ composer global require phpunit/phpunit:\* Changed current directory to /home/your/.phpenv/versions/5.3.3/composer : $ phpenv which phpunit /home/your/.phpenv/versions/5.3.3/composer/vendor/bin/phpunit