質問: php7.3をアンインストール後にphp7.4をインストールしたところ、 mb_convert_encoding()を含むページでエラーが出るようになりました。 mbstringモジュールをインストールしたところ、 mbstring.iniとmbstring.soが作られていなくて、解決しませんでした。 現状からの解決方法を教えてください。 ------------------ Fatal error: Uncaught Error: Call to undefined function mb_convert_encoding() ------------------------------------------------------------------------------- 経緯 -- 1. phpを実行してFatal Errorが出ました。 調べたところ、mbstirngモジュールに関する問題だとわかりました。 2. php.iniの[Dynamic extension] に extension=mbstring.so を追記。 httpd.serviceをrestart →結果:× 3. mbstringモジュールが入っていないのかと思い、 php -m で確認したところ、mbstringが入っていませんでした。 php -m の結果 [***@*** *]$ php -m PHP Warning: PHP Startup: Unable to load dynamic library 'mbstring.s /usr/lib64/php/modules/mbstring.so (/usr/lib64/php/modules/mbstring.s pen shared object file: No such file or directory), /usr/lib64/php/mo ing.so.so (/usr/lib64/php/modules/mbstring.so.so: cannot open shared : No such file or directory)) in Unknown on line 0 [PHP Modules] bz2 calendar Core ctype curl date exif fileinfo filter ftp gettext hash iconv json libxml openssl pcntl pcre Phar readline Reflection session sockets sodium SPL standard tokenizer zlib [Zend Modules] 3.1 php7.4用っぽいパッケージを調べて、下記のコマンドでmbstringをインストールしました。 →結果:× yum install --enablerepo=remi, php74-php-mbstring 現状 -- mbstringをインストールしても解決しませんでした。 状況を調べたところ、以下2点の問題が見つかりました。 1.mbstring.iniが無い "yum list installed | grep php*" ではmbstringの表記が見つかるが、 "php -m" だと mbstring が表示されませんでした。 mbstring.iniが無いと予想して"php --ini"で調べたところ、iniがありませんでした。 2.mbstring.soが無い "php -m" で[Warning]が表示されるので、mbstring.soを探してみましたが、見つかりませんでした。 [**@** *]$ find /usr/lib64/php/modules/* /usr/lib64/php/modules/bz2.so /usr/lib64/php/modules/calendar.so /usr/lib64/php/modules/ctype.so /usr/lib64/php/modules/curl.so /usr/lib64/php/modules/exif.so /usr/lib64/php/modules/fileinfo.so /usr/lib64/php/modules/ftp.so /usr/lib64/php/modules/gettext.so /usr/lib64/php/modules/iconv.so /usr/lib64/php/modules/json.so /usr/lib64/php/modules/phar.so /usr/lib64/php/modules/sockets.so /usr/lib64/php/modules/sodium.so /usr/lib64/php/modules/tokenizer.so ここまでが経緯と現状の説明になります。 よろしくお願いします。
回答: php7.4とmbstringを再インストールすることで解決しました。 再インストールに使用したコマンドは以下のものです。 ``` //アンインストール yum remove php-* yum remove php74-* //インストール yum install --enablerepo=remi-php74 php php-mbstring ``` php7.4をインストールしたときのパッケージとmbstringをインストールしたときのパッケージが、 「php-」で始まるものと「php74-」で始まるもので分かれていました。 CHERRYさんからいただいた、利用しているパッケージは同じですか? という質問がヒントでした。 CentOSについて、まだ全くわかっていないのですが、パッケージが違うものだったということでしょうか。 パッケージ管理について勉強してきます。 初心者未満の質問にお付き合いいただいてありがとうございました。 (追記) 質問当初の状況を再現して確認しました。 結果、以下のコマンドでも解決することがわかりました。 ``` //不要なパッケージのアンインストールする yum remove php74-* //正しいパッケージからmbstirngモジュールをインストールする yum install --enablerepo=remi-php74 php-mbstring ```