はじめに
複数バージョンを共存させたいケースは多々あると思うので記事化しました。
結論だけいうと、update-alternatives
を使った例を示しました。
manpages.ubuntu.com
環境は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の詳細とそれらの使用方法は、ヘルプページで確認できます。.」
launchpad.net
sudo apt update
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を設定しておくといいかもしれません。
以上でした!