macOS環境で複数のPHPバージョンを動かしたくなって、phpenvを使ってみることにしました。
(環境構築周りは別途、書きました)
nmtysh.hatenablog.com
nmtysh.hatenablog.com
nmtysh.hatenablog.com
以前からnodenvを使っていて、プラグインなどをまとめてアップデートできるnodenv-updateプラグインを利用しているのですが、phpenv用を見つけることができませんでした。
無ければ、作ってしまえということで、大元のrbenv-updateからフォークして作成しました。
最初は phpenv update
として作ったのですが、うまく機能しないためデバッグ用のパラメーターをつけてコマンド( PHPENV_DEBUG=1 phpenv update
)を実行してみると、php-buildプラグインが持っている自身のプラグイン更新のためのコマンドと衝突してしまい作成したプラグインのコマンドが実行されていませんでした。
$ PHPENV_DEBUG=1 phpenv update + [phpenv:33] '[' -z '' ']' + [phpenv:34] PHPENV_ROOT=/Users/user/.phpenv + [phpenv:38] export PHPENV_ROOT + [phpenv:40] '[' -z '' ']' ++ [phpenv:41] pwd + [phpenv:41] PHPENV_DIR=/Users/user + [phpenv:50] export PHPENV_DIR + [phpenv:53] shopt -s nullglob ++ [phpenv:55] abs_dirname /Users/user/.phpenv/bin/phpenv +++ [phpenv:20] pwd ++ [phpenv:20] local cwd=/Users/user ++ [phpenv:21] local path=/Users/user/.phpenv/bin/phpenv ++ [phpenv:23] '[' -n /Users/user/.phpenv/bin/phpenv ']' ++ [phpenv:24] cd /Users/user/.phpenv/bin ++ [phpenv:25] local name=phpenv +++ [phpenv:26] resolve_link phpenv ++++ [phpenv:16] type -p greadlink readlink ++++ [phpenv:16] head -1 +++ [phpenv:16] /usr/bin/readlink phpenv ++ [phpenv:26] path=../libexec/phpenv ++ [phpenv:23] '[' -n ../libexec/phpenv ']' ++ [phpenv:24] cd ../libexec ++ [phpenv:25] local name=phpenv +++ [phpenv:26] resolve_link phpenv ++++ [phpenv:16] type -p greadlink readlink ++++ [phpenv:16] head -1 +++ [phpenv:16] /usr/bin/readlink phpenv +++ [phpenv:26] true ++ [phpenv:26] path= ++ [phpenv:23] '[' -n '' ']' ++ [phpenv:29] pwd ++ [phpenv:30] cd /Users/user + [phpenv:55] bin_path=/Users/user/.phpenv/libexec + [phpenv:56] for plugin_bin in '"${PHPENV_ROOT}/plugins/"*/bin' + [phpenv:57] bin_path=/Users/user/.phpenv/libexec:/Users/user/.phpenv/plugins/php-build/bin + [phpenv:56] for plugin_bin in '"${PHPENV_ROOT}/plugins/"*/bin' + [phpenv:57] bin_path=/Users/user/.phpenv/libexec:/Users/user/.phpenv/plugins/php-build/bin:/Users/user/.phpenv/plugins/phpenv-aliases/bin + [phpenv:56] for plugin_bin in '"${PHPENV_ROOT}/plugins/"*/bin' + [phpenv:57] bin_path=/Users/user/.phpenv/libexec:/Users/user/.phpenv/plugins/php-build/bin:/Users/user/.phpenv/plugins/phpenv-aliases/bin:/Users/user/.phpenv/plugins/phpenv-update/bin + [phpenv:59] export PATH=/Users/user/.phpenv/libexec:/Users/user/.phpenv/plugins/php-build/bin:/Users/user/.phpenv/plugins/phpenv-aliases/bin:/Users/user/.phpenv/plugins/phpenv-update/bin:/Users/user/.phpenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/user/.phpenv/bin:/usr/local/sbin + [phpenv:59] PATH=/Users/user/.phpenv/libexec:/Users/user/.phpenv/plugins/php-build/bin:/Users/user/.phpenv/plugins/phpenv-aliases/bin:/Users/user/.phpenv/plugins/phpenv-update/bin:/Users/user/.phpenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/user/.phpenv/bin:/usr/local/sbin + [phpenv:61] hook_path=:/Users/user/.phpenv/phpenv.d:/usr/local/etc/phpenv.d:/etc/phpenv.d:/usr/lib/phpenv/hooks + [phpenv:62] for plugin_hook in '"${PHPENV_ROOT}/plugins/"*/etc/phpenv.d' + [phpenv:63] hook_path=:/Users/user/.phpenv/phpenv.d:/usr/local/etc/phpenv.d:/etc/phpenv.d:/usr/lib/phpenv/hooks:/Users/user/.phpenv/plugins/phpenv-aliases/etc/phpenv.d + [phpenv:62] for plugin_hook in '"${PHPENV_ROOT}/plugins/"*/etc/phpenv.d' + [phpenv:63] hook_path=:/Users/user/.phpenv/phpenv.d:/usr/local/etc/phpenv.d:/etc/phpenv.d:/usr/lib/phpenv/hooks:/Users/user/.phpenv/plugins/phpenv-aliases/etc/phpenv.d:/Users/user/.phpenv/plugins/phpenv-composer/etc/phpenv.d + [phpenv:65] export PHPENV_HOOK_PATH=:/Users/user/.phpenv/phpenv.d:/usr/local/etc/phpenv.d:/etc/phpenv.d:/usr/lib/phpenv/hooks:/Users/user/.phpenv/plugins/phpenv-aliases/etc/phpenv.d:/Users/user/.phpenv/plugins/phpenv-composer/etc/phpenv.d + [phpenv:65] PHPENV_HOOK_PATH=:/Users/user/.phpenv/phpenv.d:/usr/local/etc/phpenv.d:/etc/phpenv.d:/usr/lib/phpenv/hooks:/Users/user/.phpenv/plugins/phpenv-aliases/etc/phpenv.d:/Users/user/.phpenv/plugins/phpenv-composer/etc/phpenv.d + [phpenv:67] shopt -u nullglob + [phpenv:69] command=update + [phpenv:70] [[ '' = \-\-\h\e\l\p ]] + [phpenv:70] [[ '' = \-\h ]] + [phpenv:75] case "$command" in ++ [phpenv:83] command -v phpenv-update + [phpenv:83] command_path=/Users/user/.phpenv/plugins/php-build/bin/phpenv-update + [phpenv:84] '[' -z /Users/user/.phpenv/plugins/php-build/bin/phpenv-update ']' + [phpenv:89] shift 1 + [phpenv:90] exec /Users/user/.phpenv/plugins/php-build/bin/phpenv-update + [phpenv-update:5] '[' -z /Users/user/.phpenv ']' +++ [phpenv-update:9] dirname /Users/user/.phpenv/plugins/php-build/bin/phpenv-update ++ [phpenv-update:9] cd /Users/user/.phpenv/plugins/php-build/bin ++ [phpenv-update:9] pwd + [phpenv-update:9] script_dir=/Users/user/.phpenv/plugins/php-build/bin + [phpenv-update:10] cd /Users/user/.phpenv/plugins/php-build/bin/.. + [phpenv-update:11] git pull Already up to date.
回避方法がわからないので、作成したプラグインの名前をphpenv-update-allに変更して対応しました。
mkdir -p "$(phpenv root)/plugins" git clone https://github.com/matayoshi/phpenv-update-all.git "$(phpenv root)/plugins/phpenv-update-all"
プラグインフォルダに git clone
してインストールすると phpenv update-all
コマンドが利用できるようになります。
$ phpenv update-all Updating phpenv Updating php-build Updating phpenv-aliases Updating phpenv-composer Updating phpenv-update-all
自分用に作ったプラグインなので動作保証はしませんが、良ければどうぞ。