HOPES

Rocky Linux8にRemi Repositoryを使ってPHP8をインストール

Rocky Linux8にRemi Repositoryを使ってPHP8をインストール

Rocky Linux8.5の環境で、Remi Repositoryを使って、PHP8.1のインストールを行う方法についてまとめています。

ちなみに、これは、AlmaLinux8.5の環境でも同様に動作します。

Remi Repositoryの導入

Remi Repositoryの導入手順についてです。

Remi Repositoryとは?

Remi Repositoryは、Linuxユーザーに、PHPスタックの最新バージョン等を提供するために運用されているリポジトリです。これを導入することで、比較的簡単に最新のPHP環境を構築することができます。

Providing the latest versions of the PHP stack, full featured, and some other software, to the Fedora and Enterprise Linux (RHEL, CentOS, Oracle, Scientific Linux, ...) users.

English : FAQ - Remi's RPM repository - Blog

Remi Repositoryのインストール

「Distribution choice」から、該当のリポジトリURLを確認します。

Maintained Enterprise Linux (RHEL / CentOS / Other clones)

Enterprise Linux 8 - repository auto-configuration package : remi-release-8.rpm

Remi's RPM repository

確認できたら、インストールを行います。

# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
remi-release-8.rpm                                             25 kB/s |  26 kB     00:01    
依存関係が解決しました。
==============================================================================================
 パッケージ            Arch            バージョン                 リポジトリー          サイズ
==============================================================================================
インストール:
 remi-release          noarch          8.5-2.el8.remi             @commandline           26 k
依存関係のインストール:
 epel-release          noarch          8-13.el8                   extras                 23 k

トランザクションの概要
==============================================================================================
インストール  2 パッケージ
インストール済み:
  epel-release-8-13.el8.noarch               remi-release-8.5-2.el8.remi.noarch              

完了しました!

Remiリポジトリをインストールすると、依存関係のEPELリポジトリも自動的にインストールされます。

Remi Repositoryの設定

EPELリポジトリやRemiリポジトリは、必要な時にだけ使いたいので、通常は無効になるように設定します。

現在有効なリポジトリを確認します。

#  dnf repolist
repo id                                        repo の名前
appstream                                      Rocky Linux 8 - AppStream
baseos                                         Rocky Linux 8 - BaseOS
epel                                           Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                                   Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                         Rocky Linux 8 - Extras
remi-modular                                   Remi's Modular repository for Enterprise Linux 8 - x86_64
remi-safe                                      Safe Remi's RPM repository for Enterprise Linux 8 - x86_64

通常時に必要ないリポジトリを無効にします。

# dnf config-manager --disable epel epel-modular remi-modular remi-safe

無効になったことを確認します。

# dnf repolist
repo id                                        repo の名前
appstream                                      Rocky Linux 8 - AppStream
baseos                                         Rocky Linux 8 - BaseOS

PHP8.1のインストール

必要なリポジトリの準備が整ったらPHPのインストールを行います。

バージョン管理で8.1を有効にする

remiリポジトリを有効にして、PHPのバージョンのリストを確認します。

# dnf --enablerepo=remi-modular module list php

現在は、7.2に[d] が付いており、7.2がデフォルトになっていることが確認できます。

Rocky Linux 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                    

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                    

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled

PHP8.1を有効にします。

# dnf --enablerepo=remi-modular module enable php:remi-8.1

有効になったことを確認します。

# dnf --enablerepo=remi-modular module list php

8.1に[e] が付いており、8.1が有効になっていることが確認できます。

Rocky Linux 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                         

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 [e]                          common [d], devel, minimal                          PHP scripting language                         

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled

PHPのインストール

8.1が有効になっていることが確認できたら、PHPのインストールを行います。

必要に応じて、運用上必要なパッケージも指定してインストールします。

# dnf --enablerepo=epel,remi,remi-modular install php php-devel  php-mbstring php-mcrypt php-mysqlnd php-gd php-pear php-memcached php-zip
トランザクションの概要
==============================================================================================
インストール  137 パッケージ
インストール済み:
  apr-1.6.3-12.el8.x86_64                                             apr-util-1.6.1-6.el8.1.x86_64                                     
  apr-util-bdb-1.6.1-6.el8.1.x86_64                                   apr-util-openssl-1.6.1-6.el8.1.x86_64                             
  autoconf-2.69-29.el8.noarch                                         automake-1.16.1-7.el8.noarch                                      
  binutils-2.30-108.el8_5.1.x86_64                                    cmake-filesystem-3.20.2-4.el8.x86_64                              
  cpp-8.5.0-3.el8.x86_64                                              dejavu-fonts-common-2.35-7.el8.noarch                             
  dejavu-sans-fonts-2.35-7.el8.noarch                                 emacs-filesystem-1:26.1-7.el8.noarch                              
  fastlz-0.1.0-0.12.20070619svnrev12.el8.x86_64                       fontconfig-2.13.1-4.el8.x86_64                                    
  fontpackages-filesystem-1.44-22.el8.noarch                          fribidi-1.0.4-8.el8.x86_64                                        
  gcc-8.5.0-3.el8.x86_64                                              gcc-c++-8.5.0-3.el8.x86_64                                        
  gd3php-2.3.3-4.el8.remi.x86_64                                      glibc-devel-2.28-164.el8.x86_64                                   
  glibc-headers-2.28-164.el8.x86_64                                   graphite2-1.3.10-10.el8.x86_64                                    
  harfbuzz-1.7.5-3.el8.x86_64                                         httpd-2.4.37-43.module+el8.5.0+714+5ec56ee8.x86_64                
  httpd-filesystem-2.4.37-43.module+el8.5.0+714+5ec56ee8.noarch       httpd-tools-2.4.37-43.module+el8.5.0+714+5ec56ee8.x86_64          
  isl-0.16.1-6.el8.x86_64                                             jbigkit-libs-2.1-14.el8.x86_64                                    
  kernel-headers-4.18.0-348.7.1.el8_5.x86_64                          keyutils-libs-devel-1.5.10-9.el8.x86_64                           
  krb5-devel-1.18.2-14.el8.x86_64                                     libX11-1.6.8-5.el8.x86_64                                         
  libX11-common-1.6.8-5.el8.noarch                                    libXau-1.0.9-3.el8.x86_64                                         
  libXpm-3.5.12-8.el8.x86_64                                          libcom_err-devel-1.45.6-2.el8.x86_64                              
  libimagequant-2.12.5-1.el8.x86_64                                   libjpeg-turbo-1.5.3-12.el8.x86_64                                 
  libkadm5-1.18.2-14.el8.x86_64                                       libmcrypt-2.5.8-26.el8.x86_64                                     
  libmpc-1.1.0-9.1.el8.x86_64                                         libpkgconf-1.4.2-1.el8.x86_64                                     
  libraqm-0.7.0-4.el8.x86_64                                          libselinux-devel-2.9-5.el8.x86_64                                 
  libsepol-devel-2.9-3.el8.x86_64                                     libsodium-1.0.18-2.el8.x86_64                                     
  libstdc++-devel-8.5.0-3.el8.x86_64                                  libtiff-4.0.9-20.el8.x86_64                                       
  libtool-2.4.6-25.el8.x86_64                                         libverto-devel-0.3.0-5.el8.x86_64                                 
  libwebp-1.0.0-5.el8.x86_64                                          libxcb-1.13.1-1.el8.x86_64                                        
  libxcrypt-devel-4.1.1-6.el8.x86_64                                  libxml2-devel-2.9.7-11.el8.x86_64                                 
  libxslt-1.1.32-6.el8.x86_64                                         libzip-1.8.0-1.el8.remi.x86_64                                    
  m4-1.4.18-7.el8.x86_64                                              mailcap-2.1.48-3.el8.noarch                                       
  make-1:4.2.1-10.el8.x86_64                                          mod_http2-1.15.7-3.module+el8.5.0+695+1fa8055e.x86_64             
  nginx-filesystem-1:1.14.1-9.module+el8.4.0+542+81547229.noarch      oniguruma5php-6.9.7.1-1.el8.remi.x86_64                           
  openssl-devel-1:1.1.1k-4.el8.x86_64                                 pcre2-devel-10.32-2.el8.x86_64                                    
  pcre2-utf16-10.32-2.el8.x86_64                                      pcre2-utf32-10.32-2.el8.x86_64                                    
  perl-Carp-1.42-396.el8.noarch                                       perl-Data-Dumper-2.167-399.el8.x86_64                             
  perl-Digest-1.17-395.el8.noarch                                     perl-Digest-MD5-2.55-396.el8.x86_64                               
  perl-Encode-4:2.97-3.el8.x86_64                                     perl-Errno-1.28-420.el8.x86_64                                    
  perl-Exporter-5.72-396.el8.noarch                                   perl-File-Path-2.15-2.el8.noarch                                  
  perl-File-Temp-0.230.600-1.el8.noarch                               perl-Getopt-Long-1:2.50-4.el8.noarch                              
  perl-HTTP-Tiny-0.074-1.el8.noarch                                   perl-IO-1.38-420.el8.x86_64                                       
  perl-IO-Socket-IP-0.39-5.el8.noarch                                 perl-IO-Socket-SSL-2.066-4.module+el8.4.0+512+d4f0fc54.noarch     
  perl-MIME-Base64-3.15-396.el8.x86_64                                perl-Mozilla-CA-20160104-7.module+el8.4.0+529+e3b3e624.noarch     
  perl-Net-SSLeay-1.88-1.module+el8.4.0+512+d4f0fc54.x86_64           perl-PathTools-3.74-1.el8.x86_64                                  
  perl-Pod-Escapes-1:1.07-395.el8.noarch                              perl-Pod-Perldoc-3.28-396.el8.noarch                              
  perl-Pod-Simple-1:3.35-395.el8.noarch                               perl-Pod-Usage-4:1.69-395.el8.noarch                              
  perl-Scalar-List-Utils-3:1.49-2.el8.x86_64                          perl-Socket-4:2.027-3.el8.x86_64                                  
  perl-Storable-1:3.11-3.el8.x86_64                                   perl-Term-ANSIColor-4.06-396.el8.noarch                           
  perl-Term-Cap-1.17-395.el8.noarch                                   perl-Text-ParseWords-3.30-395.el8.noarch                          
  perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch                        perl-Thread-Queue-3.13-1.el8.noarch                               
  perl-Time-Local-1:1.280-1.el8.noarch                                perl-URI-1.73-3.el8.noarch                                        
  perl-Unicode-Normalize-1.25-396.el8.x86_64                          perl-constant-1.33-396.el8.noarch                                 
  perl-interpreter-4:5.26.3-420.el8.x86_64                            perl-libnet-3.11-3.el8.noarch                                     
  perl-libs-4:5.26.3-420.el8.x86_64                                   perl-macros-4:5.26.3-420.el8.x86_64                               
  perl-parent-1:0.237-1.el8.noarch                                    perl-podlators-4.11-1.el8.noarch                                  
  perl-threads-1:2.21-2.el8.x86_64                                    perl-threads-shared-1.58-2.el8.x86_64                             
  php-8.1.1-1.el8.remi.x86_64                                         php-cli-8.1.1-1.el8.remi.x86_64                                   
  php-common-8.1.1-1.el8.remi.x86_64                                  php-devel-8.1.1-1.el8.remi.x86_64                                 
  php-fedora-autoloader-1.0.1-2.el8.remi.noarch                       php-fpm-8.1.1-1.el8.remi.x86_64                                   
  php-gd-8.1.1-1.el8.remi.x86_64                                      php-mbstring-8.1.1-1.el8.remi.x86_64                              
  php-mysqlnd-8.1.1-1.el8.remi.x86_64                                 php-nikic-php-parser4-4.13.2-1.el8.remi.noarch                    
  php-opcache-8.1.1-1.el8.remi.x86_64                                 php-pdo-8.1.1-1.el8.remi.x86_64                                   
  php-pear-1:1.10.13-1.el8.remi.noarch                                php-pecl-igbinary-3.2.7-1.el8.remi.8.1.x86_64                     
  php-pecl-mcrypt-1.0.4-5.el8.remi.8.1.x86_64                         php-pecl-memcached-3.1.5-11.el8.remi.8.1.x86_64                   
  php-pecl-msgpack-2.2.0~RC1-4.el8.remi.8.1.x86_64                    php-pecl-zip-1.20.0-1.el8.remi.8.1.x86_64                         
  php-process-8.1.1-1.el8.remi.x86_64                                 php-sodium-8.1.1-1.el8.remi.x86_64                                
  php-xml-8.1.1-1.el8.remi.x86_64                                     pkgconf-1.4.2-1.el8.x86_64                                        
  pkgconf-m4-1.4.2-1.el8.noarch                                       pkgconf-pkg-config-1.4.2-1.el8.x86_64                             
  remi-libmemcached-awesome-1.1.1-1.el8.remi.x86_64                   rocky-logos-httpd-85.0-3.el8.noarch                               
  tar-2:1.30-5.el8.x86_64                                             xz-devel-5.2.4-3.el8.1.x86_64                                     
  zlib-devel-1.2.11-17.el8.x86_64                                    

完了しました!

PHPのバージョン確認

バージョンを確認します。

# php -v

8.1になってることが確認できます。

PHP 8.1.1 (cli) (built: Dec 15 2021 02:00:45) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.1, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies

PHPの動作確認

PHPのインストールが完了したら、WEBサーバでの動作を確認します。ここでは、Apacheで動作する前提で進めます。

Apacheの設定

ApacheのPHP設定を確認します。

# vi /etc/httpd/conf.d/php.conf

phpもしくは、pharの拡張子で、PHPモジュールが読み込まれていない場合に、php-fpmで動作するようになっています。

# Redirect to local php-fpm if mod_php (5 or 7) is not available
<ifmodule !mod_php5.c="">
  <ifmodule !mod_php7.c="">
    <ifmodule !mod_php.c="">
      # Enable http authorization headers
      SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

      <filesmatch \.(php|phar)$="">
          SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
      </filesmatch>
    </ifmodule>
  </ifmodule>
</ifmodule>

php-fpmの設定

php-fpmの設定を確認します。php-fpmは、WEBサーバとは独立したプロセスとして動作します。

# vi /etc/php-fpm.d/www.conf

php-fpmを動作させるユーザーとグループが、 apacheになっていることを確認します。

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

phpの動作確認

最後にPHPが動作することを確認します。

動作確認のためにphpのファイルを作成します。

# vi /var/www/html/test.php
<?php phpinfo(); ?>

ブラウザで/test.phpにアクセスするとPHPが動作していることが確認できます。

PHP Version 8.1.1

2022年01月19日に投稿されました。

2022年07月26日に更新されました。