はじめに
複数バージョンを共存させたいケースは多々あると思うので記事化しました。
結論だけいうと、update-alternatives
を使った例を示しました。
環境はWindows11、WSL2のUbuntu 20.04.6 LTSです。
手順
# リポジトリの追加
sudo add-apt-repository ppa:ondrej/php
Press [ENTER] to continue or Ctrl-c to cancel adding it.
と言われるので、問題がなければEnterキーを押下してください。
ppa
はPersonal Package Archives (PPA)
らしいです。
「パーソナルパッケージアーカイブ(PPA)を使用すると、Launchpadによってaptリポジトリとして構築および公開されるUbuntuソースパッケージをアップロードできます。. PPAの詳細とそれらの使用方法は、ヘルプページで確認できます。.」
# updateかけて sudo apt update # PHP8.2をインストールする sudo apt install php8.2
たぶんデフォルトでPHP7.4が入っていると思うので、ここではPHP8.2を入れようと思います。
$ php -v PHP 7.4.3-4ubuntu2.19 (cli) (built: Jun 27 2023 15:49:59) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3-4ubuntu2.19, Copyright (c), by Zend Technologies
インストール後はこんな感じです。
$ php -v PHP 8.2.14 (cli) (built: Dec 21 2023 20:19:23) (NTS) Copyright (c) The PHP Group Zend Engine v4.2.14, Copyright (c) Zend Technologies with Zend OPcache v8.2.14, Copyright (c), by Zend Technologies
PHPの実行ファイルがどこにどんな感じになっているかというと、
$ which php /usr/bin/php $ ls -la /usr/bin/php* lrwxrwxrwx 1 root root 21 Dec 7 13:30 /usr/bin/php -> /etc/alternatives/php -rwxr-xr-x 1 root root 4786104 Jun 28 2023 /usr/bin/php7.4 -rwxr-xr-x 1 root root 5696296 Dec 22 05:19 /usr/bin/php8.2 $ ls -al /etc/alternatives/php lrwxrwxrwx 1 root root 15 Nov 7 14:09 /etc/alternatives/php -> /usr/bin/php8.2
このように、/etc/alternatives/php
を仲介して、現在設定しているPHPのバージョンにリンクされています。
これを他のバージョンに切り替えるには、下記のコマンドを叩きます。
$ sudo update-alternatives --config php There are 2 choices for the alternative php (providing /usr/bin/php). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/php8.2 82 auto mode 1 /usr/bin/php7.4 74 manual mode 2 /usr/bin/php8.2 82 manual mode Press <enter> to keep the current choice[*], or type selection number:
ここで1
にすると、PHPのバージョンが切り替わっているのがわかります。
$ ls -al /etc/alternatives/php lrwxrwxrwx 1 root root 15 Dec 28 14:35 /etc/alternatives/php -> /usr/bin/php7.4 $ php -v PHP 7.4.3-4ubuntu2.19 (cli) (built: Jun 27 2023 15:49:59) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3-4ubuntu2.19, Copyright (c), by Zend Technologies
終わりに
sudo update-alternatives --config php
以後はこのコマンドを打ちましょうという話です。
長いのでaliasを設定しておくといいかもしれません。
以上でした!