以前PHPバージョン8.1の開発用Webサーバーを構築し、色々と利用していましたが、先日PHPバージョン7.2で動作するソースコードをもらい、そのシステムをベースに新規のシステムを作るという案件が入ってきたのでこのシステム用にWebサーバーをカスタムすることにしました。

希望としてはこのシステム用に新たに仮想環境作るのははっきり言って面倒w

システムごとにPHPのバージョン切り替えて作業行えれば一先ずいいかなと思って何か方法がないか確認してみました。

すると以下の方法で複数のバージョン切り替えてPHP動作するようなので一先ず記録。

まずは使用したいバージョンのPHPをインストール。

 

sudo apt install -y php8.1
sudo apt install -y php7.2
sudo apt install -y php7.4

 

次にalternativesでバージョンを切り替えるために各バージョンでインストール。

 

sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.2 100
sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 110
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 120

 

切り替えとして以下のコマンドを入力します。

 

sudo update-alternatives --config php

 

すると以下のようなPHPバージョンの表示が出ます。

 

alternative php (/usr/bin/php を提供) には 4 個の選択肢があります。

選択肢 パス 優先度 状態
------------------------------------------------------------
0 /usr/bin/php8.1 120 自動モード
1 /usr/bin/php.default 100 手動モード
* 2 /usr/bin/php7.2 100 手動モード
3 /usr/bin/php7.4 110 手動モード
4 /usr/bin/php8.1 120 手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:

 

使いたいバージョンの番号を入力しEnterを押すと切り替わるそうで、その後PHPバージョンの確認コマンドを入力してみます。今回は2を選択したとします。

 

php -v

PHP 7.2.34-43+ubuntu22.04.1+deb.sury.org+1 (cli) (built: Sep 2 2023 08:01:34) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.34-43+ubuntu22.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

 

バージョンが8.1から7.2に切り替わりました。

ではWebサーバーのルートにphpinfo()とコードを入れたPHPファイルをアップし確認してみると・・・

 

8.1のままでした。これは?

コマンドでの確認とApacheでの確認では違う結果が出てきました。どういうこと?

Apache側で何か設定変更などが必要になるのか分かりません。

ちょっと混乱してしまい、何か対策がないかと検索すると別の方法がありました。

 

sudo a2dismod php8.1 // 8.1を無効
sudo a2dismod php7.2 // 7.2を有効

sudo apt install libapache2-mod-php7.2
sudo apt install libapache2-mod-php8.1

sudo systemctl restart apache2

 

これでブラウザの更新してみると、PHP7.2と表示しました。

結局はどちらかのPHPを無効にしてどちらかを有効みたいな単純な方法が分かりやすかったですw

ホントはレンタルサーバーみたいにドメインごとに設定できるのが一番理想的なんだけど、そこまでの技術は自分にはまだ無理w

一先ず環境ができたのでとりあえずOKということで。