メモ > サーバ > 各論: プログラミング > PHPのバージョンを同居させて使用する
PHPのバージョンを同居させて使用する
PHP7.0〜7.4を同時に使えるようにしたときのメモ(使用するPHPは、バーチャルホストごとに.htaccessで指定する)
今回はRemiのリポジトリを使用するので、あらかじめ追加しておく
■うまく行かなかった方法
remiリポジトリから以下のように複数のPHPをインストールすると、
# yum -y install --enablerepo=remi-php73 php php-cli php-common php-devel php-fpm
# yum -y install --enablerepo=remi-php74 php php-cli php-common php-devel php-fpm
PHPのバージョンは最後にインストールした7.4になる
PHPは /etc/php.d にインストールされる
# php -v
PHP 7.4.24 (cli) (built: Sep 21 2021 11:23:11) ( NTS )
# php74 -v
-bash: php74: command not found
# php73 -v
-bash: php73: command not found
PHPは「php73 -v」や「php74 -v」ではなく、「php -v」で参照できるのみ
■うまく行った方法
以下を実行すると、新たにPHP7.3とPHP7.4のインストールが始まる
# yum -y install php73 php73-php-gd php73-php-xml php73-php-mbstring php73-php-mysqlnd
# yum -y install php74 php74-php-gd php74-php-xml php74-php-mbstring php74-php-mysqlnd
それぞれがインストールされる
# php -v
PHP 7.4.24 (cli) (built: Sep 21 2021 11:23:11) ( NTS )
# php74 -v
PHP 7.4.24 (cli) (built: Sep 21 2021 11:23:11) ( NTS )
# php73 -v
PHP 7.3.31 (cli) (built: Sep 21 2021 10:24:03) ( NTS )
以下を実行すると、新たにPHP7.0とPHP7.1とPHP7.2がインストールされる
# yum -y install php70 php70-php-gd php70-php-xml php70-php-mbstring php70-php-mysqlnd
# yum -y install php71 php71-php-gd php71-php-xml php71-php-mbstring php71-php-mysqlnd
# yum -y install php72 php72-php-gd php72-php-xml php72-php-mbstring php72-php-mysqlnd
なお、最低限以下の指定だけでインストールできる(PHP7.2の場合の例)
# yum -y install php72
Yum で任意のバージョンの PHP をインストールする - Qiita
https://qiita.com/bezeklik/items/74106f3ed528584293c3
上記によると、別バイナリ名として「php70」「php71」などが登録されているらしい
複数バージョンのPHPを共存できるようにするために提供されているのかもしれない
これにより、例えば以下のようにインストールすると
# yum -y install --enablerepo=remi-php74 php php-cli php-common php-devel php-fpm
# yum -y install php74 php74-php-gd php74-php-xml php74-php-mbstring php74-php-mysqlnd
# yum -y install php73 php73-php-gd php73-php-xml php73-php-mbstring php73-php-mysqlnd
以下のように参照できる
$ php -v
PHP 7.4.24 (cli) (built: Sep 21 2021 11:23:11) ( NTS )
$ php74 -v
PHP 7.4.24 (cli) (built: Sep 21 2021 11:23:11) ( NTS )
$ php73 -v
PHP 7.3.31 (cli) (built: Sep 21 2021 10:24:03) ( NTS )
Apacheから参照するには、php-fpmを利用する
/etc/php-fpm.d/www.conf はそのままデフォルトとし、
listen = 127.0.0.1:9000
pm = dynamic
/etc/opt/remi/php74/php-fpm.d/www.conf は70〜74までそれぞれ設定する(以下はPHP7.4用の設定)
listen = 127.0.0.1:9000
pm = dynamic
↓
listen = 127.0.0.1:9074
pm = ondemand
/etc/httpd/conf.d/vhosts.conf などで以下のように指定する(「FilesMatch」のブロックを追加。この場合はPHP7.2)
<VirtualHost *:80>
ServerName php.development.local
DocumentRoot /var/www/vhosts/php/html
</VirtualHost>
↓
<VirtualHost *:80>
ServerName php.development.local
DocumentRoot /var/www/vhosts/php/html
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9072"
</FilesMatch>
</VirtualHost>
これで任意のPHPを使用することができる
■参考
参考になりそうなページ
Yum で複数バージョンの PHP を共存させる - Qiita
https://qiita.com/bezeklik/items/860ba080bf4c664cd8e9
複数のバージョンの PHP を切り替えて使う - Qiita
https://qiita.com/centipede/items/0a5e2f55ec3f66dc6bd9
PHP5.6、PHP7.0、PHP7.1の混在環境の構築 | agathion アメブロ支店
https://ameblo.jp/amebajes/entry-12322702469.html