デフォルトリポジトリを使ってPHPをインストールするとCentOS 7系では5.4が、CentOS8系ではPHP 7.2が入る。それよりも新しめなバージョンのPHPを使いたいときの王道的な方法として、remiリポジトリを使う方法を紹介する。
前提
- 2020/09/20 (日) 時点の情報
# cat /etc/redhat-release CentOS Linux release 8.2.2004 (Core)
本記事ではCentOS 8を前提に書いているが、CentOS 7 / Amazon Linux 2でも大体同じような手順でインストールできる。CentOS 7で行う場合は dnf
を yum
と読み替えればOK。
ざっくり手順
- remiリポジトリを使えるようにする
- remiリポジトリを使って、PHP 7.4をインストールする
- "php" で呼べるようにする
コマンドまとめ
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm sudo dnf install php74 sudo alternatives --install /usr/bin/php php /usr/bin/php74 1
一つづつ解説していく。
解説
1. remiリポジトリを使えるようにする
remiはイカしたサードパーティ製ライブラリを提供するrpmリポジトリ。ガンガン行こうぜ系OSのFedoraで使われているような新しいバージョンのソフトウェアをCentOSとかでも使えるようにしてくれている。
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm ... インストール済み: remi-release-8.1-2.el8.remi.noarch 完了しました!
URLでお察しの通りCentOSのメジャーバージョンごとにRPMファイルが違うので、CentOS 7とかの場合は remi-release-7.rpm
とする。詳しくは下記を参照。
English : Repository Configuration - Remi's RPM repository - Blog
2. PHP 7.4を入れる
あとはお目当てのものをインストールしていくだけ。remiリポジトリでインストール可能なパッケージのいくつかはデフォルトリポジトリとコンフリクトしうるので無効化されていて、以前はPHP 7.4も --enablerepo=remi
のように明示的に有効化する必要があった。今は remi-safe
にカテゴライズされたことによって、特にオプションなしでインストールできる。
$ sudo dnf install php74 ... インストール済み: environment-modules-4.1.4-4.el8.x86_64 php74-1.0-3.el8.remi.x86_64 php74-php-cli-7.4.10-1.el8.remi.x86_64 php74-php-common-7.4.10-1.el8.remi.x86_64 php74-php-json-7.4.10-1.el8.remi.x86_64 php74-runtime-1.0-3.el8.remi.x86_64 policycoreutils-python-utils-2.9-9.el8.noarch scl-utils-1:2.0.2-12.el8.x86_64 完了しました!
php74
というコマンド名でインストールされていることが確認できる。
$ php -v -bash: php: コマンドが見つかりません $ php74 -v PHP 7.4.10 (cli) (built: Sep 1 2020 13:58:08) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
php-mbstring
などのPHP拡張を入れたいときは php74-
というprefixをつける。例えば php-mbstring
の場合は php74-php-mbstring
といった具合。
$ dnf install php74-php-mbstring ... インストール済み: oniguruma5php-6.9.5+rev1-2.el8.remi.x86_64 php74-php-mbstring-7.4.10-1.el8.remi.x86_64 完了しました!
3. "php" で呼べるようにする
PHPを使いたいときに php74
って読み替えるのは面倒なので php
で呼べようにしたい。alternativesでエイリアスを設定しておくのがオススメ。
syntaxは
alternatives --install <リンク> <名前> <パス> <優先度>
なので、こんな感じにすればOK。
$ which php74 /usr/bin/php74 $ sudo alternatives --install /usr/bin/php php /usr/bin/php74 1 $ php --version PHP 7.4.10 (cli) (built: Sep 1 2020 13:58:08) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies