LoginSignup
2
4

miseを使って複数のPHPバージョンをインストールする

Last updated at Posted at 2024-02-02

やりたいこと

  • Macで
  • 簡単なインストールで
  • php8.1とphp8.2をインストールし
  • php8.1なプロジェクトにcdしたらphp8.1を使いたい
  • php8.2なプロジェクトにcdしたらphp8.2を使いたい

mise

asdfとの比較
  • asdfはランタイムを呼び出すときにオーバーヘッド(~120ms)かかるが、miseはプロンプトがロードされるときに少量のオーバーヘッド(~5ms)を追加する。
  • 参考

Uninstall old phps

  • brewでインストールしたphpがあるなら削除しておく
brew remove php@8.2 php@8.1 php@8.0 php@7.4 php

Dependencies

  • miseとphpの依存をインストールする
  • asdf-phpのreadmeに書いてあるとおりですが、ここに依存パッケージが書いてあります。
# Install packages
brew install autoconf automake bison freetype gd gettext icu4c krb5 libedit libiconv libjpeg libpng libxml2 libzip openssl@1.1 pkg-config re2c zlib

# Install conflicting packages
brew install openssl@3

Install, Setup mise

  • miseをインストールして設定する(zshの場合)
# Install
curl https://mise.jdx.dev/install.sh | sh

# zsh
echo "eval \"\$(~/.local/bin/mise activate zsh)\""    >> ~/.zshrc
echo 'export PATH="$HOME/.local/share/mise/shims:$PATH"' >> ~/.zprofile
source ~/.zshrc

Install asdf-php

  • miseではasdf-phpというコミュニティpluginを使ってphpをインストールするため。
mise plugin install php https://github.com/asdf-community/asdf-php

List phps

  • miseを使ってインストール可能なphpを表示する
  • RCがlatestになるようです
# 全表示
mise ls-remote php

# 8.1系を表示
mise ls-remote php@8.1

# 8.2系を表示
mise ls-remote php@8.2

# 8.2系のlatestを表示
mise latest php@8.2

Install phps

  • miseをつかってphpをインストールする
mise install php@8.1.27
mise install php@8.2.15

Set php version

  • 各プロジェクトにバージョン指定ファイルを作る
  • このファイルがあることでこのdirにcdしたとき、phpのバージョンが変わります
  • ドキュメント
echo "[tools]\nphp = '8.2'" > ~/your/php82/project/.mise.toml
echo "[tools]\nphp = '8.1'" > ~/your/php82/project/.mise.toml

Tests

  • 実害はないけど、mise use後に1秒くらい待たないとバージョンが切り替わらないような気がする
mkdir -p /tmp/php81 /tmp/php82

# Global phpのテスト
cd /tmp
mise use --global php@8.2
php -v

# php81のテスト
cd /tmp/php81
mise use php@8.1
php -v

# php82のテスト
cd /tmp/php82
mise use php@8.2
php -v

Install php extentions

  • phpバージョンごとにpeclコマンドがあるのでそれぞれのバージョンでpecl installする
mkdir -p /tmp/php81 /tmp/php82

# php81
cd /tmp/php81
mise use php@8.1
pecl install igbinary
pecl install imagick
pecl install xdebug
pecl install redis
pecl install apcu
# 自分のphp81プロジェクトに必要なextををインストールしてください

# php82
cd /tmp/php82
mise use php@8.2
pecl install igbinary
pecl install imagick
pecl install xdebug
pecl install redis
pecl install apcu
# 自分php82のプロジェクトに必要なextををインストールしてください

php.ini

  • php8.1の例。例です例
$(cat << 'EOF' > $(mise where php@8.1)/conf.d/php.ini
# add system-wide php configuration options here
extension=redis.so
extension=apcu.so
extension=ddtrace.so
extension=igbinary.so
extension=imagick.so
zend_extension=opcache.so

date.timezone=Asia/Tokyo
upload_max_filesize=200M
post_max_size=200M

opcache.preload=
opcache.preload_user=
opcache.validate_timestamps=1
opcache.file_update_protection=2
EOF
)
  • php8.2の例。例です例
$(cat << 'EOF' > $(mise where php@8.2)/conf.d/php.ini
# add system-wide php configuration options here
extension=redis.so
extension=apcu.so
extension=ddtrace.so
extension=igbinary.so
extension=imagick.so
zend_extension=opcache.so

date.timezone=Asia/Tokyo
upload_max_filesize=200M
post_max_size=200M

opcache.preload=
opcache.preload_user=
opcache.validate_timestamps=1
opcache.file_update_protection=2
EOF
)

ほか

# php full pathを知りたいとき
mise where php@8.1
mise where php@8.2

# アップグレードしたいとき
mise upgrade php@8.1
mise upgrade php@8.2

# shim phpを使いたいとき
~/.local/share/mise/shims/php --version

# インストール済みのphpバージョンを表示する
mise ls php

# phpをアンインストールする
mise uninstall php@8.1.27RC1
mise uninstall php@8.2.16RC1

# キャッシュクリア
mise cache clear
2
4
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
2
4