CentOS 8 にPHP7.4をDNFでインストール
篠原 隆司
アフィリエイト広告を利用しています
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です
さくらのVPSにCentOS 8をインストールした覚書です。
今回は、PHPの最新版であるPHP7.4をインストールします。
CentOS 8 を dnf でそのままインストールすると PHP7.2 になります。
remi を使うことで、dnf インストールで PHP7.4 が選択可能になります。
ソースインストールではなく、 dnf インストールですので、ソースインストールをお探しの場合は下記をご覧ください。
PHP7.4.6をCentOS7にソースインストール
なお本番環境で利用される場合はここにある内容だけを鵜呑みにせずセキュリティ専門家に相談されることをお勧めします。
環境
実施日 | 2020-05-29 |
サーバ | さくらのVPS 2G |
OS | CentOS 8.1 |
cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
PHP7.4のインストール
remiからインストールします。
選択可能なバージョンを確認してみます。
dnf module list php
CentOS-8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common, devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
php remi-7.4 common [d], devel, minimal PHP scripting language
AppStream では、7.2 がデフォルトで 7.3 も可ですが、Remi では、7.4 を選択可能になっています。
ということで、PHP7.4 をインストールします。
dnf module install php:remi-7.4
余談 (必要になったときに再確認します)
▼でバージョンの切り替え
dnf module reset php:remi-7.4
dnf module install php:remi-7.3
確認
# バージョン
php -v
# php.ini の場所
php -i | grep php.ini
# php-fpm の場所
which php-fpm
# php-fpm のバージョン
php-fpm -v
php-fpm の設定
# 現在の状態を確認
systemctl status php-fpm
# 起動
systemctl start php-fpm
# 終了
systemctl stop php-fpm
# 自動起動の有効化
systemctl enable php-fpm
# 自動起動の解除
systemctl disable php-fpm
php-zip
dnf install php-zip
PHPを実行して、次のようなエラーが出た場合にインストールします。
zip機能を使わないPHPプログラムだとインストールしなくてもOKです。
PHP Fatal error: Uncaught Error: Class 'ZipArchive' not found in ・・・
mysql
dnf install php-mysqlnd
gd
dnf install php-gd
その他
必要に応じて
dnf install php-xmlrpc
dnf install php-pecl-mcrypt
dnf install php-opcache
dnf install php-pecl-apcu
dnf install php-pecl-zip
dnf install php-pear
トラブルシューティング
mb-string でエラー
ある日、dnf を使おうとすると次のようなエラーが出てどうにもこうにもな感じになりました。
メタデータの期限切れの最終確認: 0:05:27 時間前の 2020年06月26日 02時27分57秒 に実施しました。
エラー:
問題 1: cannot install the best update candidate for package php-mbstring-7.4.6-1.el8.remi.x86_64
- nothing provides libonig.so.105()(64bit) needed by php-mbstring-7.4.7-1.el8.remi.x86_64
問題 2: problem with installed package php-mbstring-7.4.6-1.el8.remi.x86_64
- package php-mbstring-7.4.6-1.el8.remi.x86_64 requires php-common(x86-64) = 7.4.6-1.el8.remi, but none of the providers can be installed
- cannot install both php-common-7.4.7-1.el8.remi.x86_64 and php-common-7.4.6-1.el8.remi.x86_64
- cannot install the best update candidate for package php-common-7.4.6-1.el8.remi.x86_64
- nothing provides libonig.so.105()(64bit) needed by php-mbstring-7.4.7-1.el8.remi.x86_64
(競合するパッケージを置き換えるには、コマンドラインに '--allowerasing' を追加してみてください または、'--skip-broken' を追加して、インストール不可のパッケージをスキップしてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)
# 削除はできたけど
dnf remove php-mbstring
# インストールできなくなって
dnf install php-mbstring
# アップデートしてみても
dnf update
# インストールできなくて
dnf install php-mbstring
次のようなエラーに悩まされました。
# dnf install php-mbstring
メタデータの期限切れの最終確認: 0:12:07 時間前の 2020年06月26日 02時27分57秒 に実施しました。
エラー:
問題: cannot install the best candidate for the job
- nothing provides libonig.so.105()(64bit) needed by php-mbstring-7.4.7-1.el8.remi.x86_64
(インストール不可のパッケージをスキップするには、'--skip-broken' を追加してみてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)
で、たどり着いたのがこちらです。
# 鬼車をインストール
yum --enablerepo=remi install oniguruma5php
# mbstring をインストール
dnf install php-mbstring