2
1

More than 1 year has passed since last update.

EC2でPHPを8.2へバージョンアップ

Last updated at Posted at 2023-02-01

先日、EC2環境でPHPを8.2にバージョンアップする機会があったので、つまずきポイントについて書き留めます。

PHP8.2の新機能についてはこちらで詳しく紹介されてます。

バージョンアップの流れはこんなイメージです。

  1. 既存バージョンをアンインストールする
  2. パッケージリポジトリをアップデートする
  3. 新バージョンをインストールする

1. 既存バージョンをアンインストールする

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

$ php -v
PHP 8.1.4 (cli) (built: Mar 15 2022 20:18:41) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.4, Copyright (c) Zend Technologies

現行インストールされているパッケージも確認しておきます。

$ yum list installed PHPphp*
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
226 packages excluded due to repository priority protections
インストール済みパッケージ
php81.x86_64                                             8.1-1.el7.remi                                    @remi-safe
php81-php-cli.x86_64                                     8.1.4-1.el7.remi                                  @remi-safe
php81-php-common.x86_64                                  8.1.4-1.el7.remi                                  @remi-safe
php81-php-gd.x86_64                                      8.1.4-1.el7.remi                                  @remi-safe
php81-php-mbstring.x86_64                                8.1.4-1.el7.remi                                  @remi-safe
php81-php-mysqlnd.x86_64                                 8.1.4-1.el7.remi                                  @remi-safe
php81-php-pdo.x86_64                                     8.1.4-1.el7.remi                                  @remi-safe
php81-php-pecl-zip.x86_64                                1.20.0-1.el7.remi                                 @remi-safe
php81-php-xml.x86_64                                     8.1.4-1.el7.remi                                  @remi-safe
php81-runtime.x86_64                                     8.1-1.el7.remi                                    @remi-safe

現行バージョンをアンインストールします。

$ sudo yum remove "php*"
・・・
・・・
削除しました:
  php81.x86_64 0:8.1-1.el7.remi                            php81-php-cli.x86_64 0:8.1.4-1.el7.remi                  
  php81-php-common.x86_64 0:8.1.4-1.el7.remi               php81-php-gd.x86_64 0:8.1.4-1.el7.remi                   
  php81-php-mbstring.x86_64 0:8.1.4-1.el7.remi             php81-php-mysqlnd.x86_64 0:8.1.4-1.el7.remi              
  php81-php-pdo.x86_64 0:8.1.4-1.el7.remi                  php81-php-pecl-zip.x86_64 0:1.20.0-1.el7.remi            
  php81-php-xml.x86_64 0:8.1.4-1.el7.remi                  php81-runtime.x86_64 0:8.1-1.el7.remi                    

完了しました!

2. パッケージリポジトリをアップデートする

・パッケージリポジトリを更新します

$ sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
remi-release-7.rpm                                                                            |  27 kB  00:00:00     
/var/tmp/yum-root-49dq_S/remi-release-7.rpm を調べています: remi-release-7.9-5.el7.remi.noarch
・・・
更新:
  remi-release.noarch 0:7.9-5.el7.remi                                                                               

完了しました!

3. 新バージョンをインストールする

・yum からPHPをインストールします

$ sudo yum install --enablerepo=epel,remi.,remi-php82, php php-cli php-common php-gd php-mbstring php-mysqlnd php-pdo php-xml
インストール:
 php.x86_64 0:8.0.25-1.amzn2            php-cli.x86_64 0:8.0.25-1.amzn2       php-common.x86_64 0:8.0.25-1.amzn2   php-gd.x86_64 0:8.0.25-1.amzn2   
 php-mbstring.x86_64 0:8.0.25-1.amzn2   php-mysqlnd.x86_64 0:8.0.25-1.amzn2   php-pdo.x86_64 0:8.0.25-1.amzn2      php-xml.x86_64 0:8.0.25-1.amzn2  

完了しました!

$ yum list installed |grep php
gd3php.x86_64                         2.3.3-4.el7.remi               @remi-safe 
oniguruma5php.x86_64                  6.9.7.1-1.el7.remi             @remi-safe 
php.x86_64                            8.0.25-1.amzn2                 @amzn2extra-php8.0
php-cli.x86_64                        8.0.25-1.amzn2                 @amzn2extra-php8.0
php-common.x86_64                     8.0.25-1.amzn2                 @amzn2extra-php8.0
php82-php-common.x86_64               8.2.1-1.el7.remi               @remi-safe 
php82-php-pecl-zip.x86_64             1.21.1-1.el7.remi              @remi-safe 
php82-runtime.x86_64                  8.2-2.el7.remi                 @remi-safe 

バージョンが8.1から8.0へバージョンダウンしてました。。

$ php -v
PHP 8.0.25 (cli) (built: Oct 31 2022 22:42:34) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.25, Copyright (c) Zend Technologies

原因は、
EC2ではamazon-linuxリポジトリが優先され、—enablerepoで別のリポジトリを指定しても有効にならないためのようです。

amazon-linux-extrasに登録されてるパッケージを確認してみると、PHP8.2は入っていませんでした。。。amazon-linuxのリポジトリを封じたい。

$ amazon-linux-extras list
  0  ansible2                 available    \
        [ =2.4.2  =2.4.6  =2.8  =stable ]
  2  httpd_modules            available    [ =1.0  =stable ]
  3  memcached1.5             available    \
        [ =1.5.1  =1.5.16  =1.5.17 ]
  6  postgresql10             available    [ =10  =stable ]
  9  R3.4                     available    [ =3.4.3  =stable ]
 10  rust1                    available    \
        [ =1.22.1  =1.26.0  =1.26.1  =1.27.2  =1.31.0  =1.38.0
          =stable ]
 18  libreoffice              available    \
        [ =5.0.6.2_15  =5.3.6.1  =stable ]
 19  gimp                     available    [ =2.8.22 ]
 20  docker=latest            enabled      \
        [ =17.12.1  =18.03.1  =18.06.1  =18.09.9  =stable ]
 21  mate-desktop1.x          available    \
        [ =1.19.0  =1.20.0  =stable ]
 22  GraphicsMagick1.3        available    \
        [ =1.3.29  =1.3.32  =1.3.34  =stable ]
 23  tomcat8.5                available    \
        [ =8.5.31  =8.5.32  =8.5.38  =8.5.40  =8.5.42  =8.5.50
          =stable ]
 24  epel=latest              enabled      [ =7.11  =stable ]
 25  testing                  available    [ =1.0  =stable ]
 26  ecs                      available    [ =stable ]
 27  corretto8                available    \
        [ =1.8.0_192  =1.8.0_202  =1.8.0_212  =1.8.0_222  =1.8.0_232
          =1.8.0_242  =stable ]
 29  golang1.11               available    \
        [ =1.11.3  =1.11.11  =1.11.13  =stable ]
 30  squid4                   available    [ =4  =stable ]
 32  lustre2.10               available    \
        [ =2.10.5  =2.10.8  =stable ]
 33  java-openjdk11           available    [ =11  =stable ]
 34  lynis                    available    [ =stable ]
 36  BCC                      available    [ =0.x  =stable ]
 37  mono                     available    [ =5.x  =stable ]
 38  nginx1                   available    [ =stable ]
 39  ruby2.6                  available    [ =2.6  =stable ]
 40  mock                     available    [ =stable ]
 41  postgresql11             available    [ =11  =stable ]
 43  livepatch                available    [ =stable ]
 44  python3.8                available    [ =stable ]
 45  haproxy2                 available    [ =stable ]
 46  collectd                 available    [ =stable ]
 47  aws-nitro-enclaves-cli   available    [ =stable ]
 48  R4                       available    [ =stable ]
 49  kernel-5.4               available    [ =stable ]
 50  selinux-ng               available    [ =stable ]
 51  php8.0=latest            enabled      [ =stable ]
 52  tomcat9                  available    [ =stable ]
 53  unbound1.13              available    [ =stable ]
 54  mariadb10.5              available    [ =stable ]
 55  kernel-5.10              available    [ =stable ]
 56  redis6                   available    [ =stable ]
 57  ruby3.0                  available    [ =stable ]
 58  postgresql12             available    [ =stable ]
 59  postgresql13             available    [ =stable ]
 60  mock2                    available    [ =stable ]
 61  dnsmasq2.85              available    [ =stable ]
 62  kernel-5.15              available    [ =stable ]
 63  postgresql14             available    [ =stable ]
 64  firefox                  available    [ =stable ]
 65  lustre                   available    [ =stable ]
  _  php8.1                   available    [ =stable ]
 67  awscli1                  available    [ =stable ]

解決策、
amazon-linuxリポジトリを--disablerepoで無効にしてあげます。

$ sudo yum -y install php php-cli php-common php-gd php-mbstring php-mysqlnd php-pdo php-pecl-zip php-xml runtime  --enablerepo=epel,remi,remi-php82 --disablerepo=amzn2-core,amzn2extra-php8.0
$ yum list installed |grep php
 gd3php.x86_64                         2.3.3-4.el7.remi               @remi-safe 
 oniguruma5php.x86_64                  6.9.7.1-1.el7.remi             @remi-safe 
 php.x86_64                            8.2.1-1.el7.remi               @remi-php82
 php-cli.x86_64                        8.2.1-1.el7.remi               @remi-php82
 php-common.x86_64                     8.2.1-1.el7.remi               @remi-php82
 php-gd.x86_64                         8.2.1-1.el7.remi               @remi-php82
 php-mbstring.x86_64                   8.2.1-1.el7.remi               @remi-php82
 php-mysqlnd.x86_64                    8.2.1-1.el7.remi               @remi-php82
 php-pdo.x86_64                        8.2.1-1.el7.remi               @remi-php82
 php-pecl-zip.x86_64                   1.21.1-1.el7.remi.8.2          @remi-php82
 php-sodium.x86_64                     8.2.1-1.el7.remi               @remi-php82
 php-xml.x86_64                        8.2.1-1.el7.remi               @remi-php82

無事、バージョンアップすることができました!

$ php -v
 PHP 8.2.1 (cli) (built: Jan  3 2023 18:40:55) (NTS gcc x86_64)
 Copyright (c) The PHP Group
 Zend Engine v4.2.1, Copyright (c) Zend Technologies

ステージング環境ではすんなりバージョンアップできたので油断してましたが、おかげでパッケージリポジトリの知識が深まりました。めでたし、めでたし。

2
1
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
2
1