はじめに
AlmaLinux8でデフォルトでインストールできるPHPは、2022-10-04時点でPHP7.2系
です。このほかにも7.x系のPHPや最近では8.x系のPHPも登場してきています。
ここでは、AlmaLinux8におけるPHPのバージョンアップ手順を備忘録としてまとめておきます。
PHPのインストール元
ここでは、AlmaLinux8標準リポジトリAlmaLinux 8 - AppStream
ではなく、epel
リポジトリremi
リポジトリを用います。たまに、PHPのモジュールが標準リポジトリでは提供されていない場合があり、これを吸収するために外部リポジトリを利用します
アップデート手順
1. 外部リポジトリの追加
# epelリポジトリを追加します
dnf -y install epel-release
# remiリポジトリを追加します
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# dnfのメタデータキャッシュを作成しておきます
dnf clean all && dnf -y makecache
2. 現在のPHPの削除
# 現在のiniファイルをバックアップしておきます
cp /etc/php.ini /etc/php.ini.bk
# phpパッケージをすべて削除します
# 削除されるパッケージを確認後 y で削除します
dnf remove php-*
3. インストールするPHPバージョンの指定
dnf module list php
で、インストールできるPHPのモジュールリストを確認できます。
dnf module list php
#実行結果
AlmaLinux 8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
php 7.4 common [d], devel, minimal PHP scripting language
php 8.0 common [d], 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
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
デフォルトでは 7.2 が指定されていることがわかります。このデフォルトを指定することでインストールしたいPHPのバージョンとインストール元リポジトリを指定できます。
以下のコマンドを用いてインストールするPHPバージョンとリポジトリを指定します
# remi-7.3を指定する場合
dnf -y module reset php && dnf -y module enable php:remi-7.3
# remi-7.4を指定する場合
dnf -y module reset php && dnf -y module enable php:remi-7.4
# remi-8.0を指定する場合
dnf -y module reset php && dnf -y module enable php:remi-8.0
# remi-8.1を指定する場合
dnf -y module reset php && dnf -y module enable php:remi-8.1
# remi-8.2を指定する場合
dnf -y module reset php && dnf -y module enable php:remi-8.2
# 指定したものをリセットしたい場合
dnf -y module reset php
4. PHPのインストール(バージョンアップ)
# phpをインストールします
dnf -y install php php-cli php-fpm php-devel php-pear php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache php-process
主要なPHPモジュールを列挙していますが、不要なものは消してからインストールしてみてください
5. インストールされたPHPバージョンの確認
php -v
#実行結果
PHP 7.4.32 (cli) (built: Sep 28 2022 09:09:55) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.32, Copyright (c), by Zend Technologies
6. php.iniの設定投入
vim /etc/php.ini
# 以下は例です
memory_limit = 2G #RAM容量にあわせて調整してください
error_log = /var/log/php_errors.log #phpエラーログファイルパスを指定する
post_max_size = 300M #利用目的にあわせて調整してください
upload_max_filesize = 300M #利用目的にあわせて調整してください
date.timezone = Asia/Tokyo #コメントアウトを外して、Asia/Tokyoを指定してください
mbstring.language = Japanese #コメントアウトを外してください
バックアップしたphp.ini.bkを参考に設定を投入するようにしてください
7. PHP-FPMの設定
# php-fpmを自動起動するようにしておきます
systemctl enable php-fpm
8. Apacheへの読み込み
# phpのバージョンが変わったのでApacheを再起動して反映させます
# あわせてphp-fpmも再起動(起動)させます
systemctl restart httpd && systemctl restart php-fpm
9. PHPの動作確認
/var/www/html
のドキュメントルートにphpinfo()
を表示させるphpファイルを作成します
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
ブラウザを開いて、動作確認用のphpファイルにアクセスします。指定したバージョンのPHPが表示されることを確認してください。
おわりに
CentOS7ではリポジトリ名を指定しつつphpをインストールさせなくてはならなかったですが、dnf module enable php:****
で、デフォルトのバージョンやリポジトリを指定できますので、少し楽になりそうな感触でした。
ただ、まだPHP8.x系に対応していないOSSもあるので、バージョンアップの際はPHPのバージョンに気をつけて行いましょう。