Amazon Linux 2 に複数のPHPバージョンを同居
PHPインストール時に複数バージョンを同居しても問題ないよう、インストールしてる手順をメモ
汎用的なやり方ではないと思いますが、簡単に設定・切替えしたい人向けです。
① yum updateした後に、remiリポジトリを追加
# 最新版へupdate
sudo yum -y update
# remiリポジトリを追加
sudo rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
② 利用するPHPバージョン毎にインストール
# PHPを使うバージョン毎にインストール
for v in 70 74 80; do sudo yum -y install php$v php$v-php php$v-php-{mbstring,mysqlnd,redis,pecl-apcu,opcache,xml,gmp}; done
# PHP7.0を使う場合
php70 -v
# PHP7.4を使う場合
php74 -v
# PHP8.0を使う場合
php80 -v
③ apacheの自動起動を有効化 ※versionは2.4以上
sudo systemctl enable httpd
sudo systemctl list-unit-files | grep -e httpd
④ apacheのphp.confを勝手にロードされないよう、ファイル名変更
cd /etc/httpd/conf.modules.d/
# php.confの拡張子を変更
sudo rename php.conf php.conf.org *php.conf
⑤ alternativesで各バージョンを管理
※「複数のバージョンの PHP を切り替えて使う」記事を参考にしました。
# PHP7.0
sudo update-alternatives \
--install /usr/bin/php php /opt/remi/php70/root/usr/bin/php 10 \
--slave /usr/bin/php-cgi php-cgi /opt/remi/php70/root/usr/bin/php-cgi \
--slave /usr/bin/phar.phar phar /opt/remi/php70/root/usr/bin/phar.phar \
--slave /etc/httpd/conf.modules.d/10-php.conf webphp /etc/httpd/conf.modules.d/15-php70-php.conf.org
# PHP7.4
sudo update-alternatives \
--install /usr/bin/php php /opt/remi/php74/root/usr/bin/php 10 \
--slave /usr/bin/php-cgi php-cgi /opt/remi/php74/root/usr/bin/php-cgi \
--slave /usr/bin/phar.phar phar /opt/remi/php74/root/usr/bin/phar.phar \
--slave /etc/httpd/conf.modules.d/10-php.conf webphp /etc/httpd/conf.modules.d/15-php74-php.conf.org
# PHP8.0
sudo update-alternatives \
--install /usr/bin/php php /opt/remi/php80/root/usr/bin/php 10 \
--slave /usr/bin/php-cgi php-cgi /opt/remi/php80/root/usr/bin/php-cgi \
--slave /usr/bin/phar.phar phar /opt/remi/php80/root/usr/bin/phar.phar \
--slave /etc/httpd/conf.modules.d/10-php.conf webphp /etc/httpd/conf.modules.d/20-php80-php.conf.org
⑥ メインで使うphpに切替え
$ sudo update-alternatives --config php
There are 3 programs which provide 'php'.
Selection Command
-----------------------------------------------
*+ 1 /opt/remi/php70/root/usr/bin/php
2 /opt/remi/php74/root/usr/bin/php
3 /opt/remi/php80/root/usr/bin/php
Enter to keep the current selection[+], or type selection number:
※php.ini設定を忘れずに(タイムゾーン等)
# PHP7.0.ini
sudo vi /etc/opt/remi/php70/php.ini
# PHP7.4.ini
sudo vi /etc/opt/remi/php74/php.ini
# PHP8.0.ini
sudo vi /etc/opt/remi/php81/php.ini
コンテナ毎に各バージョンを用意してもOKだが、こちらがお手軽かなと。
殆ど自分用メモですが、ご指摘等頂けると助かります。