【LINUX】サーバーでPHPバージョンを変える

**問題**：
composerでphpoffice/phpspreadsheetをインストールしたいが、PHPバージョンが低すぎてインストールできない。
XサーバーのUI画面で変えられるPHPバージョンはWEBで動作するPHPバージョンであり、CLIのPHPバージョンは変えられない。

```terminal:title.text
[ xs000000@sv00000 ~]$ composer require phpoffice/phpspreadsheet
Warning from https://repo.packagist.org: Support for Composer 1 will be shutdown on August 1st 2025. You should upgrade to Composer 2. See https://blog.packagist.com/shutting-down-packagist-org-support-for-composer-1-x/
 [InvalidArgumentException]                                                                                      
Package phpoffice/phpspreadsheet at version  has a PHP requirement incompatible with your PHP version (5.4.16)  
//略
```

`Package phpoffice/phpspreadsheet at version  has a PHP requirement incompatible with your PHP version (5.4.16)`がその警告だ。
`ls /usr/bin/php*`で使えるバージョンを確認し、`php7.4 -v`で変えようとしたが、失敗した。バージョンはそのままだった。

```terminal:title.text
[ xs000000@sv00000 ~]$ ls /usr/bin/php*
/usr/bin/php          /usr/bin/php-fcgi7.0  /usr/bin/php-fcgi8.2  /usr/bin/php5.6-cgi  /usr/bin/php7.2      /usr/bin/php8.0-cgi  /usr/bin/phpize
/usr/bin/php-cgi      /usr/bin/php-fcgi7.1  /usr/bin/php-fcgi8.3  /usr/bin/php54       /usr/bin/php7.2-cgi  /usr/bin/php8.1
/usr/bin/php-fcgi5.1  /usr/bin/php-fcgi7.2  /usr/bin/php5.1       /usr/bin/php54-cgi   /usr/bin/php7.3      /usr/bin/php8.1-cgi
/usr/bin/php-fcgi5.3  /usr/bin/php-fcgi7.3  /usr/bin/php5.3       /usr/bin/php7.0      /usr/bin/php7.3-cgi  /usr/bin/php8.2
/usr/bin/php-fcgi5.4  /usr/bin/php-fcgi7.4  /usr/bin/php5.4       /usr/bin/php7.0-cgi  /usr/bin/php7.4      /usr/bin/php8.2-cgi
/usr/bin/php-fcgi5.5  /usr/bin/php-fcgi8.0  /usr/bin/php5.5       /usr/bin/php7.1      /usr/bin/php7.4-cgi  /usr/bin/php8.3
/usr/bin/php-fcgi5.6  /usr/bin/php-fcgi8.1  /usr/bin/php5.6       /usr/bin/php7.1-cgi  /usr/bin/php8.0      /usr/bin/php8.3-cgi

[ xs000000@sv00000 ~]$ php7.4 -v
PHP 7.4.33 (cli) (built: Aug 15 2023 10:32:32) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
[ xs000000@sv00000 ~]$ php -v
PHP 5.4.16 (cli) (built: Apr  1 2020 04:07:17)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies
```

**原因**：
`php7.4 -v`で失敗したように見えたが、失敗していない。ただし、すべてのスクリプトやコマンドがこのコマンドに指定されたPHPで実行されるわけではない。
現在、/.bash_profileの環境変数 PATHで指定されたディレクトリを左から順に、実行ファイルを探している。/usr/bin/php7.4ではなく/usr/bin/phpが実行ファイルになっているため、明示的に指定する必要がある。

**解決策**：
ホームディレクトリ配下に`/usr/bin/php7.4`を指す実行ファイルのシンボリックリンクを`/home/xs000000/bin`に作成する。

```terminal:title.text
[ xs000000@sv00000 ~]$ mkdir $HOME/bin
```

```terminal:title.text
[ xs000000@sv00000 home]$ ln -s /usr/bin/php7.4 $HOME/bin/php
[ xs000000@sv00000 home]$ ls -l /home/xs000000/bin
合計 0
lrwxrwxrwx 1 xs000000 members 15 12月 23 12:00 php -> /usr/bin/php7.4
```

その後、`~/.bash_profile`を編集して、PATHの部分を変更す。作成した`$HOME/bin`を既存の`$PATH`の最初に追加する。

```terminal:title.text
PATH=$HOME/bin:$PATH
```

これにより、システムは最初に`$HOME/bin`を検索し、その後で既存の`$PATH`を検索するため、`$HOME/bin`が優先される。

最後に、この設定を有効にするためには以下のコマンドを実行する。

```terminal:title.text
[ xs000000@sv00000 home]$ source ~/.bash_profile
```

**結果**：
バージョンが変更された。

```terminal:title.text
[ xs000000@sv00000 home]$ php -v
PHP 7.4.33 (cli) (built: Aug 15 2023 10:32:32) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
```