10
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AlmaLinux8のPHPを7.3/7.4/8.0/8.1/8.2系にバージョンアップする

Last updated at Posted at 2022-10-04

はじめに

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のバージョンに気をつけて行いましょう。

10
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?