CentOS6.xのPHP5.3をPHP7.xにアップデートする

WordPressのダッシュボードにログインすると、こんなメッセージが表示されるようになりました。

文言そのままの意味なのですが、どうやら現在使用しているCentOS6.xに含まれるPHPのバージョンが古いので、最新版に更新せよ、ということですね。
確かに最近yum updateしてないな・・・と思っていたので早速SSHでリモートログインしてアップデートを試みたのですが、現在使用中のPHP5.3が最新版のようで、単純にyum updateでは最新版に更新できないようです。

そこでgoogle先生に聞いて調べてみたところ、色々先人たち軌跡が多数ヒットしました。
そのうちのいくつかをやや斜め読みして、僕も手動でアップデートを行ってみることにしました。
もっとも、手動といってもアップデート自体はこれまでと同様yumで行うのですが(笑)

大まかに述べておくと、

  1. 現在のPHP関連パッケージを確認
  2. remiレポジトリの追加
  3. 既存のPHPパッケージを消去
  4. 同レポジトリを有効にして関連パッケージをインストール
  5. インストールしたPHPのバージョンを確認
  6. httpdの再起動

という手順でアップデートを行います。

では以下に一つずつ、もう少し細かくみていきましょう。

1:既存のPHP関連パッケージを確認

# yum list installed | grep php

php.x86_64             5.3.3-49.el6     @base
php-cli.x86_64         5.3.3-49.el6     @base
php-common.x86_64      5.3.3-49.el6     @base
php-gd.x86_64          5.3.3-49.el6     @base
php-mbstring.x86_64    5.3.3-49.el6     @base
php-mysql.x86_64       5.3.3-49.el6     @base
php-pdo.x86_64         5.3.3-49.el6     @base
php-pear.noarch        1:1.9.4-5.el6    @base
php-xml.x86_64         5.3.3-49.el6     @base

後でここに表示されたパッケージを指定してインストールを行うことになります。

2:remiレポジトリの追加

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

http://rpms.famillecollet.com/enterprise/remi-release-6.rpmを取得中
警告: /var/tmp/rpm-tmp.wiAsSC: ヘッダV4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY

準備中…               ########################################### [100%]  
1:remi-release          ########################################### [100%]

# ls /etc/yum.repos.d/

CentOS-Base.repo      epel-testing.repo  remi-glpi94.repo  remi-php73.repo

CentOS-Debuginfo.repo  epel.repo          remi-php54.repo   remi-safe.repo

CentOS-Media.repo      remi-glpi91.repo   remi-php70.repo   remi.repo

CentOS-Vault.repo      remi-glpi92.repo   remi-php71.repo

CentOS-fasttrack.repo  remi-glpi93.repo   remi-php72.repo

後半はインストールされているリポジトリの確認です。yum.repos.d/以下にremi*が入っていればOKです。
なお、この後の行程で使用するのはremi.repoとremi-php73.repo(PHPの最新版のリポジトリ)です。

3:既存のPHPパッケージを消去

# yum remove php-*

読み込んだプラグイン:fastestmirror, security
削除処理の設定をしています
依存性の解決をしています
–>トランザクションの確認を実行しています。
—> Package php.x86_64 0:5.3.3-49.el6 will be 削除
—> Package php-cli.x86_64 0:5.3.3-49.el6 will be 削除
—> Package php-common.x86_64 0:5.3.3-49.el6 will be 削除
—> Package php-gd.x86_64 0:5.3.3-49.el6 will be 削除
—> Package php-mbstring.x86_64 0:5.3.3-49.el6 will be 削除
—> Package php-mysql.x86_64 0:5.3.3-49.el6 will be 削除
—> Package php-pdo.x86_64 0:5.3.3-49.el6 will be 削除
—> Package php-pear.noarch 1:1.9.4-5.el6 will be 削除
—> Package php-xml.x86_64 0:5.3.3-49.el6 will be 削除
–>依存性解決を終了しました。

依存性を解決しました

================================================================================

 パッケージ           アーキテクチャバージョン             リポジトリー   容量

================================================================================

削除:

 php                  x86_64         5.3.3-49.el6           @base         3.5 M
 php-cli              x86_64         5.3.3-49.el6           @base         6.2 M
 php-common           x86_64         5.3.3-49.el6           @base         2.9 M
 php-gd               x86_64         5.3.3-49.el6           @base         324 k
 php-mbstring         x86_64         5.3.3-49.el6           @base         2.1 M
 php-mysql            x86_64         5.3.3-49.el6           @base         216 k
 php-pdo              x86_64         5.3.3-49.el6           @base         168 k
 php-pear             noarch         1:1.9.4-5.el6          @base         2.2 M
 php-xml              x86_64         5.3.3-49.el6           @base         307 k

トランザクションの要約

================================================================================

削除                 9 パッケージ

インストール済み容量: 18 M

これでいいですか? [y/N]  y(”y”を押下する)

パッケージをダウンロードしています:
rpm_check_debugを実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
警告: RPMDB はyum 以外で変更されました。

  削除中                  : php-5.3.3-49.el6.x86_64                        1/9
  削除中                  : php-mysql-5.3.3-49.el6.x86_64                  2/9
  削除中                  : 1:php-pear-1.9.4-5.el6.noarch                  3/9
  削除中                  : php-cli-5.3.3-49.el6.x86_64                    4/9
  削除中                  : php-pdo-5.3.3-49.el6.x86_64                    5/9
  削除中                  : php-gd-5.3.3-49.el6.x86_64                      6/9
  削除中                  : php-xml-5.3.3-49.el6.x86_64                    7/9
  削除中                  : php-mbstring-5.3.3-49.el6.x86_64               8/9
  削除中                  : php-common-5.3.3-49.el6.x86_64                  9/9

警告: /etc/php.ini は/etc/php.ini.rpmsave として保存されました。

  Verifying               : php-mbstring-5.3.3-49.el6.x86_64               1/9
  Verifying               : php-pdo-5.3.3-49.el6.x86_64                    2/9
  Verifying               : php-mysql-5.3.3-49.el6.x86_64                  3/9
  Verifying               : php-xml-5.3.3-49.el6.x86_64                    4/9
  Verifying               : php-cli-5.3.3-49.el6.x86_64                    5/9
  Verifying               : 1:php-pear-1.9.4-5.el6.noarch                  6/9
  Verifying               : php-5.3.3-49.el6.x86_64                         7/9
  Verifying               : php-gd-5.3.3-49.el6.x86_64                     8/9
  Verifying               : php-common-5.3.3-49.el6.x86_64                  9/9

削除しました:

  php.x86_64 0:5.3.3-49.el6                php-cli.x86_64 0:5.3.3-49.el6       

  php-common.x86_64 0:5.3.3-49.el6         php-gd.x86_64 0:5.3.3-49.el6        

  php-mbstring.x86_64 0:5.3.3-49.el6       php-mysql.x86_64 0:5.3.3-49.el6     

  php-pdo.x86_64 0:5.3.3-49.el6            php-pear.noarch 1:1.9.4-5.el6       

  php-xml.x86_64 0:5.3.3-49.el6          

完了しました!

(1)の段階で確認した全てのPHP関連ファイルが削除されたことを確認します。
さぁ、もう後には引けません!
・・・って、実際にはもう一度yum updateすれば元どおりになりますけどね(笑)

4:同レポジトリを有効にして関連パッケージをインストール

# yum install –enablerepo=remi,remi-php73 php php-cli php-common php-gd php-mbstring php-mysql php-pdo php-pear php-xml

読み込んだプラグイン:fastestmirror, security

インストール処理の設定をしています

Loading mirror speeds from cached hostfile

 * base: mirrors.cat.net
 * epel: ftp.iij.ad.jp
 * extras: mirrors.cat.net
 * remi: ftp.riken.jp
 * remi-php73: ftp.riken.jp
 * remi-safe: ftp.riken.jp
 * updates: mirrors.cat.net
remi-php73                                               | 3.0 kB     00:00    
remi-php73/primary_db                                    | 166 kB     00:00    

パッケージphp-mysql はphp-mysqlnd によって不要になりました。代わりにphp-mysqlnd-7.3.2-1.el6.remi.x86_64 のインストールを試みています。
依存性の解決をしています

–>トランザクションの確認を実行しています。
—> Package php.x86_64 0:7.3.2-1.el6.remi will be インストール
–>依存性の処理をしています: libargon2.so.0()(64bit) のパッケージ: php-7.3.2-1.el6.remi.x86_64
—> Package php-cli.x86_64 0:7.3.2-1.el6.remi will be インストール
—> Package php-common.x86_64 0:7.3.2-1.el6.remi will be インストール
–>依存性の処理をしています: php-json(x86-64) = 7.3.2-1.el6.remi のパッケージ: php-common-7.3.2-1.el6.remi.x86_64
—> Package php-gd.x86_64 0:7.3.2-1.el6.remi will be インストール
–>依存性の処理をしています: gd-last(x86-64) >= 2.1.1 のパッケージ: php-gd-7.3.2-1.el6.remi.x86_64
–>依存性の処理をしています: libgd.so.3()(64bit) のパッケージ: php-gd-7.3.2-1.el6.remi.x86_64
—> Package php-mbstring.x86_64 0:7.3.2-1.el6.remi will be インストール
—> Package php-mysqlnd.x86_64 0:7.3.2-1.el6.remi will be インストール
—> Package php-pdo.x86_64 0:7.3.2-1.el6.remi will be インストール
—> Package php-pear.noarch 1:1.10.8-1.el6.remi will be インストール
–>依存性の処理をしています: php-composer(fedora/autoloader) のパッケージ: 1:php-pear-1.10.8-1.el6.remi.noarch
–>依存性の処理をしています: php-posix のパッケージ: 1:php-pear-1.10.8-1.el6.remi.noarch
—> Package php-xml.x86_64 0:7.3.2-1.el6.remi will be インストール
–>トランザクションの確認を実行しています。
—> Package gd-last.x86_64 0:2.2.5-5.el6.remi will be インストール
–>依存性の処理をしています: libwebp.so.5()(64bit) のパッケージ: gd-last-2.2.5-5.el6.remi.x86_64
—> Package libargon2.x86_64 0:20161029-2.el6.remi will be インストール
—> Package php-fedora-autoloader.noarch 0:1.0.0-1.el6.remi will be インストール
—> Package php-json.x86_64 0:7.3.2-1.el6.remi will be インストール
—> Package php-process.x86_64 0:7.3.2-1.el6.remi will be インストール
–>トランザクションの確認を実行しています。
—> Package libwebp.x86_64 0:0.4.3-3.el6 will be インストール
–>依存性解決を終了しました。

依存性を解決しました

================================================================================

 パッケージ               アーキテクチャ

                                    バージョン              リポジトリー   容量

================================================================================

インストールしています:

 php                      x86_64    7.3.2-1.el6.remi        remi-php73    3.0 M
 php-cli                  x86_64    7.3.2-1.el6.remi        remi-php73   4.4 M
 php-common               x86_64    7.3.2-1.el6.remi        remi-php73    1.1 M
 php-gd                   x86_64    7.3.2-1.el6.remi        remi-php73     72 k
 php-mbstring             x86_64    7.3.2-1.el6.remi        remi-php73    1.1 M
 php-mysqlnd              x86_64    7.3.2-1.el6.remi        remi-php73    209 k
 php-pdo                  x86_64    7.3.2-1.el6.remi        remi-php73    112 k
 php-pear                noarch    1:1.10.8-1.el6.remi     remi          372 k
 php-xml                  x86_64    7.3.2-1.el6.remi        remi-php73    174 k

依存性関連でのインストールをします。:

 gd-last                  x86_64    2.2.5-5.el6.remi        remi          129 k
 libargon2               x86_64    20161029-2.el6.remi     remi           21 k
 libwebp                  x86_64    0.4.3-3.el6             epel          210 k
 php-fedora-autoloader    noarch   1.0.0-1.el6.remi        remi          8.8 k
 php-json                 x86_64    7.3.2-1.el6.remi        remi-php73     60 k
 php-process              x86_64    7.3.2-1.el6.remi        remi-php73     68 k

トランザクションの要約

================================================================================

インストール        15 パッケージ
総ダウンロード容量: 11 M
インストール済み容量: 43 M

これでいいですか? [y/N]  y(”y”を押下する)

パッケージをダウンロードしています:

(1/15): gd-last-2.2.5-5.el6.remi.x86_64.rpm             | 129 kB     00:00    
(2/15): libargon2-20161029-2.el6.remi.x86_64.rpm        |  21 kB     00:00    
(3/15): libwebp-0.4.3-3.el6.x86_64.rpm                  | 210 kB     00:00    
(4/15): php-7.3.2-1.el6.remi.x86_64.rpm                 | 3.0 MB     00:00    
(5/15): php-cli-7.3.2-1.el6.remi.x86_64.rpm             | 4.4 MB     00:00    
(6/15): php-common-7.3.2-1.el6.remi.x86_64.rpm          | 1.1 MB     00:00    
(7/15): php-fedora-autoloader-1.0.0-1.el6.remi.noarch.rp | 8.8 kB     00:00    
(8/15): php-gd-7.3.2-1.el6.remi.x86_64.rpm              |  72 kB     00:00    
(9/15): php-json-7.3.2-1.el6.remi.x86_64.rpm            |  60 kB     00:00    
(10/15): php-mbstring-7.3.2-1.el6.remi.x86_64.rpm       | 1.1 MB     00:00    
(11/15): php-mysqlnd-7.3.2-1.el6.remi.x86_64.rpm        | 209 kB     00:00    
(12/15): php-pdo-7.3.2-1.el6.remi.x86_64.rpm            | 112 kB     00:00    
(13/15): php-pear-1.10.8-1.el6.remi.noarch.rpm          | 372 kB     00:00    
(14/15): php-process-7.3.2-1.el6.remi.x86_64.rpm        |  68 kB     00:00    
(15/15): php-xml-7.3.2-1.el6.remi.x86_64.rpm            | 174 kB     00:00    

——————————————————————————–

合計                                            6.2 MB/s |  11 MB     00:01    

警告: rpmts_HdrFromFdno: ヘッダV4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Importing GPG key 0x00F97F56:
 Userid : Remi Collet <RPMS@FamilleCollet.com>
 Package: remi-release-6.10-1.el6.remi.noarch (installed)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-remi

これでいいですか? [y/N]  y(”y”を押下する)

rpm_check_debugを実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています

  インストールしています  : libargon2-20161029-2.el6.remi.x86_64           1/15
  インストールしています  : php-common-7.3.2-1.el6.remi.x86_64             2/15
  インストールしています  : php-json-7.3.2-1.el6.remi.x86_64               3/15
  インストールしています  : php-cli-7.3.2-1.el6.remi.x86_64                4/15
  インストールしています  : php-fedora-autoloader-1.0.0-1.el6.remi.noar   5/15
  インストールしています  : php-xml-7.3.2-1.el6.remi.x86_64                6/15
  インストールしています  : php-process-7.3.2-1.el6.remi.x86_64            7/15
  インストールしています  : php-pdo-7.3.2-1.el6.remi.x86_64                8/15
  インストールしています  : libwebp-0.4.3-3.el6.x86_64                     9/15
  インストールしています  : gd-last-2.2.5-5.el6.remi.x86_64               10/15
  インストールしています  : php-gd-7.3.2-1.el6.remi.x86_64                11/15
  インストールしています  : php-mysqlnd-7.3.2-1.el6.remi.x86_64           12/15
  インストールしています  : 1:php-pear-1.10.8-1.el6.remi.noarch           13/15
  インストールしています  : php-7.3.2-1.el6.remi.x86_64                   14/15
  インストールしています  : php-mbstring-7.3.2-1.el6.remi.x86_64          15/15
 

  Verifying               : php-mbstring-7.3.2-1.el6.remi.x86_64          1/15
  Verifying               : php-gd-7.3.2-1.el6.remi.x86_64                2/15
  Verifying               : libwebp-0.4.3-3.el6.x86_64                    3/15
  Verifying               : gd-last-2.2.5-5.el6.remi.x86_64               4/15
  Verifying              : php-7.3.2-1.el6.remi.x86_64                   5/15
  Verifying               : php-fedora-autoloader-1.0.0-1.el6.remi.noar   6/15
  Verifying               : 1:php-pear-1.10.8-1.el6.remi.noarch           7/15
  Verifying               : php-xml-7.3.2-1.el6.remi.x86_64               8/15
  Verifying               : libargon2-20161029-2.el6.remi.x86_64          9/15
  Verifying               : php-mysqlnd-7.3.2-1.el6.remi.x86_64          10/15
  Verifying               : php-process-7.3.2-1.el6.remi.x86_64           11/15
  Verifying               : php-cli-7.3.2-1.el6.remi.x86_64              12/15
  Verifying               : php-pdo-7.3.2-1.el6.remi.x86_64              13/15
  Verifying               : php-json-7.3.2-1.el6.remi.x86_64              14/15
  Verifying               : php-common-7.3.2-1.el6.remi.x86_64           15/15

インストール:

  php.x86_64 0:7.3.2-1.el6.remi           php-cli.x86_64 0:7.3.2-1.el6.remi    

  php-common.x86_64 0:7.3.2-1.el6.remi    php-gd.x86_64 0:7.3.2-1.el6.remi     

  php-mbstring.x86_64 0:7.3.2-1.el6.remi  php-mysqlnd.x86_64 0:7.3.2-1.el6.remi

  php-pdo.x86_64 0:7.3.2-1.el6.remi       php-pear.noarch 1:1.10.8-1.el6.remi  

  php-xml.x86_64 0:7.3.2-1.el6.remi     

 

依存性関連をインストールしました:

  gd-last.x86_64 0:2.2.5-5.el6.remi
  libargon2.x86_64 0:20161029-2.el6.remi
  libwebp.x86_64 0:0.4.3-3.el6
  php-fedora-autoloader.noarch 0:1.0.0-1.el6.remi
  php-json.x86_64 0:7.3.2-1.el6.remi
  php-process.x86_64 0:7.3.2-1.el6.remi                                         

完了しました!

依存性の関係(?)で2回確認を求められましたが、いずれもyすることでインストールはつつがなく終了しました。
ところで–enablerepo=remi,remi-php73のオプションをつける際、その他のリポジトリより先にremiレポジトリを読み込ませるようにしなければならないという情報もありましたが、僕の環境では特にそのようなことはありませんでした。
(この先、普通にyum updateした時にレポジトリ関連でエラーが出たらまた改めて処置するということで・・・)

5:インストールしたPHPのバージョンを確認

# php –version

PHP 7.3.2 (cli) (built: Feb  6 2019 08:25:37) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.2, Copyright (c) 1998-2018 Zend Technologies
/etc/init.d/httpd restart

PHPのバージョンが最新版(ここでは7.3)になっていればOKです。

6:httpdの再起動

# /etc/init.d/httpd restart

httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

httpdを再起動しないと、ダッシュボードでの例のPHP更新メッセージが消えません!
再起動後にWordPressにアクセスし直せば、このメッセージは表示されていないはずです。

これでWordPressの動作が快適になるはず・・・なのですが、果たしてどうでしょうかね?

4 thoughts on “CentOS6.xのPHP5.3をPHP7.xにアップデートする

  1. ピンバック: WordPressのハイフン連結を無効化する | -- CIPHER --

  2. 4:同レポジトリを有効にして関連パッケージをインストール

    enablerepo オプションの指定が、-enablerepo になっています。
    おそらく WP の機能で — が – になったのだと思います。

      • bacchi さま

        初めまして、ご訪問並びにご指摘ありがとうございます。

        ざっと調べた限りでは、どうやらWordPressのwptexturize()という関数が自動変換しているようでした。
        対症療法的に、「-」を「-」に置き換えてみたのですが(そういう方法があると紹介されていたので)、
        残念ながらうまく表示されませんでした。急いで行ってみたので何か抜けているのかもですが・・・。

        抜本的な対策として先の関数を無効にする方法があるそうなので、おいおい試してみたいと思っています。

        ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)