CentOS7のPHP 7.2をPHP 7.3にYUM経由でアップデート

PHP 7.2のアクティブサポートが2019年11月末で切れるので、PHP 7.3をインストールしたときの覚書。

環境: CentOS 7.7.1908, WordPress 5.2.3


PHPのサポート状況は公式サイトで確認


remiリポジトリの設定ファイルで切り替えるだけ。
# cd /etc/yum.repos.d/
# less remi-php73.repo
[remi-php73]
enabled=1

# less remi-php72.repo
[remi-php72]
enabled=0

アップデート実行
# yum update

PECL関連でWarning。一応メモ。
PHP Warning:  Invalid argument supplied for foreach() in /usr/share/pear/PEAR/Command.php on line 249
PHP Stack trace:
PHP   1. {main}() /usr/share/pear/peclcmd.php:0
PHP   2. require_once() /usr/share/pear/peclcmd.php:31
PHP   3. PEAR_Command::getCommands() /usr/share/pear/pearcmd.php:54
PHP   4. PEAR_Command::registerCommands() /usr/share/pear/PEAR/Command.php:302
PHP Warning:  Invalid argument supplied for foreach() in /usr/share/pear/PEAR/Command.php on line 249

実行ユーザーを変更しているので権限再設定
# chown nginx.www -R /var/lib/php/

確認
# php --version
PHP Warning:  PHP Startup: Unable to load dynamic library 'mecab.so' (tried: /usr/lib64/php/modules/mecab.so (/usr/lib64/php/modules/mecab.so: undefined symbol: _zval_ptr_dtor), /usr/lib64/php/modules/mecab.so.so (/usr/lib64/php/modules/mecab.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 7.3.10 (cli) (built: Sep 24 2019 09:20:18) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.10, Copyright (c) 1998-2018 Zend Technologies
    with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans

mecabが読み込めないので再ビルドする。
# cd /opt/software/mecab-0.996
# make clean
# ./configure --with-charset=utf8 --enable-utf8-only
# make

# make check
# make install

辞書も念のため再ビルド。こっちは「utf-8」(ハイフンがある)
# cd ../mecab-ipadic-2.7.0-20070801
# ./configure --with-charset=utf-8
# make clean
# make
# make install

PEARではなく、GitHub上のソースコードからビルドすることにした。
まずはphp-pearを削除
# yum list installed | grep php-
# yum remove php-pear

cloneしてビルド
# cd ../
# git clone https://github.com/rsky/php-mecab.git
# cd php-mecab/mecab/
# phpize
# ./configure --with-mecab=/usr/local/bin/mecab-config
# make
# make test
# make install

再インストールするときは「make clean」するのを忘れずに。

確認
# php --version
# php --ri mecab
mecab
MeCab Support => enabled
Module Version => 0.6.0
Version Info => Compiled => Linked
MeCab Library => 0.996 => 0.996
Directive => Local Value => Master Value
mecab.default_rcfile => no value => no value
mecab.default_dicdir => no value => no value
mecab.default_userdic => no value => no value

PHPを再起動して、ログを見ながらブラウザ上で動作確認
# systemctl restart php-fpm
# journalctl -f




【関連記事】