こんにちは、ちーかまです!
2023年7月1日をもって、Google アナリティクスがユニバーサルアナリティクスからGoogle アナリティクス 4に完全移行しましたね。
移行に対応するため社内ポータルサイトのひとつでWordpressとPHPのバージョンアップを行ったのですが、PHPのバージョンアップでパッケージの依存関係を解決するために難航しました...
忘備録のために、今回はその件について書こうと思います。
環境構成
アップデート前
アップデート後
やったこと
まずはじめに、PHP7.4をインストールしました。
# remiリポジトリインストール $ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm # 古いPHP削除 $ sudo yum remove php-* # 新しいPHPインストール $ sudo yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php74 php php-bcmath php-cli php-common php-devel php-embedded php-gd php-gmp php-json php-mbstring php-mcrypt php-mysqlnd php-opcache php-pdo php-process php-pspell php-xml php-pecl-apcu
実行完了したので、バージョンを確認してみよう!とコマンド実行したところなんと警告が...
$ php -v PHP Warning: PHP Startup: Unable to load dynamic library 'gd' (tried: /usr/lib64/php/modules/gd (/usr/lib64/php/modules/gd: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/gd.so (/lib64/libraqm.so.0: undefined symbol: fribidi_get_bracket_types)) in Unknown on line 0
gdがロードできていないようですね。どうもfribidi_get_bracket_typesが原因の様子。
調べたところfribidiのバージョンが1.0 未満の場合に発生する問題であるとのことだったため、fribidiを1.0以降のバージョンにアップデートしました。
# fribidiを削除 $ sudo yum -y remove fribidi # 1.0以降のfribidiをインストール $ sudo rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/fribidi-1.0.2-1.el7_7.1.x86_64.rpm
そして改めてgdインストールしようとしたところ、libraqm.so.0の要求が...
$ yum install --enablerepo=remi-php74 php-gd 読み込んだプラグイン:fastestmirror remi-php74 | 3.0 kB 00:00:00 remi-php74/primary_db | 263 kB 00:00:01 Loading mirror speeds from cached hostfile * remi-php74: rpms.remirepo.net * remi-safe: rpms.remirepo.net 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ php-gd.x86_64 0:7.4.33-7.el7.remi を インストール --> 依存性の処理をしています: libgd.so.103()(64bit) のパッケージ: php-gd-7.4.33-7.el7.remi.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ gd3php.x86_64 0:2.3.3-7.el7.remi を インストール --> 依存性の処理をしています: libraqm.so.0()(64bit) のパッケージ: gd3php-2.3.3-7.el7.remi.x86_64 --> 依存性解決を終了しました。 エラー: パッケージ: gd3php-2.3.3-7.el7.remi.x86_64 (remi-safe) 要求: libraqm.so.0()(64bit) 問題を回避するために --skip-broken を用いることができます。 これらを試行できます: rpm -Va --nofiles --nodigest
ということでlibraqm.so.0をインストールしてから、再度gdインストール。
$ wget http://ftp.iij.ad.jp/pub/linux/Fedora/epel/7/x86_64/Packages/l/libraqm-0.7.0-4.el7.x86_64.rpm $ rpm -ivh libraqm-0.7.0-4.el7.x86_64.rpm $ yum install --enablerepo=remi-php74 php-gd
無事実行完了したのでバージョンを確認してみよう!とコマンド実行したところなんとまたまた警告が...!
$ php -v PHP Warning: PHP Startup: Unable to load dynamic library 'gd' (tried: /usr/lib64/php/modules/gd (/usr/lib64/php/modules/gd: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/gd.so (/lib64/libraqm.so.0: undefined symbol: hb_ft_font_set_load_flags)) in Unknown on line 0
今度はhb_ft_font_set_load_flagsが原因の様子。
harfbuzzのバージョンが合ってないかも、と思ったのでとりあえず削除してインストールし直してみました。
# harfbuzzを削除 $ sudo yum -y remove harfbuzz # harfbuzzをインストール $ wget https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/harfbuzz-1.7.5-2.el7.x86_64.rpm $ rpm -ivh harfbuzz-1.7.5-2.el7.x86_64.rpm
そして改めてibraqm.so.0をインストールしてからのgdインストールしたところ、とうとう成功しました...!
$ php -v PHP 7.4.33 (cli) (built: Jun 6 2023 16:33:05) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies
まとめ
はじめてのPHPバージョンアップだったこともあり、想定していたよりも作業が難航し途中で不安になりました。
とはいえ本来の目的であるGoogle アナリティクス 4への移行作業としてはまだまだ序盤なため、次回執筆時はWordpressやプラグインのアップデートについて触れられたらなと思います!
\\『真のユーザーファーストでマーケットを創造する』仲間を募集中です!! //