PHPを8.0から8.2にdnfでアップグレード
PHP8.0の公式サポートが終了したのでPHP8.2にアップグレードしたときの覚書。
環境: CentOS Stream 8
WordPressがサポートしているphpバージョンも確認しておく。
参考: PHP Compatibility and WordPress Versions – Make WordPress Core
1.PHP8.2をdnfモジュール一覧からアップグレード
dnf moduleの中にphp8.2が追加されていた。
前の記事を参考に。
参考: CentOS Stream 8のPHPを7.4から8.0にアップグレード
現在のモジュールを確認
# dnf module list php
CentOS Stream 8 - AppStreamName Streamphp 7.2 [d]php 7.3php 7.4php 8.0 [e]php 8.2
php8.0から8.2に切り替える。
phpを初期状態にresetしてphp8.2を有効にする。
# dnf module reset php
# dnf module enable php:8.2
# dnf --allowerasing distro-sync
確認
# php --version
PHP Warning: PHP Startup: imagick: Unable to initialize moduleModule compiled with module API=20200930PHP compiled with module API=20220829These options need to matchin Unknown on line 0PHP Warning: PHP Startup: mecab: Unable to initialize moduleModule compiled with module API=20200930PHP compiled with module API=20220829These options need to matchin Unknown on line 0PHP 8.2.13 (cli) (built: Nov 21 2023 09:55:59) (NTS gcc x86_64)Copyright (c) The PHP GroupZend Engine v4.2.13, Copyright (c) Zend Technologieswith Zend OPcache v8.2.13, Copyright (c), by Zend Technologies
imagickとmecabの再ビルドが必要。
とりあえずPHPモジュールを削除。
# cd /etc/php.d/
# rm -f imagick.ini mecab.ini
ファイル権限が変更されているので再設定
# chown nginx.www -R /var/lib/php/*
nginx用の設定ファイルはいらない
# cd /etc/nginx/conf.d/
# ls
# mv php-fpm.conf bak/
phpの設定確認
# less /etc/php-fpm.d/www.conf
# less /etc/php.ini
date.timezone = "Asia/Tokyo"upload_max_filesize = 2Mpost_max_size = 12Mmemory_limit = 256M
2.php-imagickをビルドしてインストール
php-gdがあるから要らないような気もするけど一応インストールしておく。
PECL拡張ライブラリの一覧表示。
# pecl list
Installed packages, channel pecl.php.net:=========================================Package Version Stateapcu 5.1.23 stableimagick 3.7.0 stablezip 1.22.3 stable
imagickをリビルド。
# pecl uninstall imagick
# pecl install imagick
拡張モジュールiniファイルを配置して再起動。
# echo "extension=imagick.so" > /etc/php.d/imagick.ini
# systemctl restart php-fpm
# php -i | grep imagick
3.php-mecabをビルドしてインストール
php8.0に対応したリポジトリがなくなっていたので、別のリポジトリに切り替える。
参考: GitHub - zaikoio/php-mecab: MeCab binding for PHP
# cd /opt/software/php-mecab/
# git remote set-url origin https://github.com/zaikoio/php-mecab.git
# git fetch origin
# git reset --hard origin/master
ビルド実行。
# cd mecab
# make clean
# phpize
# ./configure --with-mecab=/usr/local/bin/mecab-config
# make
# make test
# make install
拡張モジュールiniファイルを配置して再起動。
# echo "extension=mecab.so" > /etc/php.d/mecab.ini
# systemctl restart php-fpm
# php -i | grep mecab