web-dev-qa-db-ja.com

致命的なエラー:未定義関数mb_detect_encoding()の呼び出し

このチュートリアル に従ってLAMPを設定しようとするとこのエラーが表示され、phpmyadminを設定しようとすると上記のエラーが表示されます。

致命的なエラー:C:\ WebServer\Apache\htdocs\phpmyadmin\libraries\php-gettext\gettext.incの177行目の未定義関数mb_detect_encoding()の呼び出し

ここでアドバイスに従いました: phpmyadmin mb_detect_encodingにアクセスしようとすると、PHPの致命的なエラー .

phpinfo()を実行すると、次のようにMySQLとmb_stringのサポートが有効になっていることがわかります。

mb_string

MySQL

mysqli

44
Louis93

Gdライブラリもインストールします。

このリンクを確認してください http://www.php.net/manual/en/mbstring.installation.php

40
Jibu K

PHPを再コンパイルするよりもはるかに簡単な方法があります。必要なmbstringライブラリをインストールするだけです:

例: CentOS 6.2にPHP mbstringをインストールする方法

yum --enablerepo=remi install php-mbstring

ああ、後でApacheを再起動することを忘れないでください。

28
Phil LaNasa

Mbstringは、デフォルト以外の拡張子です。これは、デフォルトでは有効になっていないことを意味します。 configureオプションでモジュールを明示的に有効にする必要があります。

PHPバージョンが7.0の場合:

Sudo apt-get install php7.0-mbstring

Sudo service Apache2 restart

PHPバージョンが5.6の場合:

Sudo apt-get install php5.6-mbstring

Sudo service Apache2 restart
8
BSB

Windowsでは、ファイルphp.iniを開き、次の変更を行います。

コメントを削除し、extディレクトリをポイントします

; extension_dir = "./"-> extension_dir = "C:/ Php/ext"

この拡張機能のコメントを削除

  • extension = php_mbstring.dll
  • extension = php_mysqli.dll

Apacheサービスを再起動します

httpd -k restart

6
André Ribeiro

Php.iniファイルを開いたとき、「extension_dir」行は次のようになりました。

extension_dir = "C:/wamp/bin/php/php5.4.16/ext/"

変更後:

extension_dir = "C:\wamp\bin\php\php5.4.16\ext\"

そしてそれは働いた。

3

Windows/WAMPでは、Gd2拡張機能、MySQL拡張機能、外部dll/libsにphp_mbstring.dllの依存関係はないようです。

deplister.exe ext\php_mbstring.dll

php5ts.dll,OK
MSVCR110.dll,OK
KERNEL32.dll,OK

deplister.exe ext\php_Gd2.dll

php5ts.dll,OK
USER32.dll,OK
GDI32.dll,OK
KERNEL32.dll,OK
MSVCR110.dll,OK

Php_mbstringが既に必要としているものは何でも、組み込みです(静的にDLLにコンパイルされます)。

未定義関数mb_detect_encoding()の呼び出し

このエラーも非常に具体的かつ決定的です...

関数mb_detect_encoding()は、php_Gd、php_mysql、php_mysqli、または別の拡張機能がロードされていないため失敗しませんでした。単に見つかりませんでした。

有効であると報告されたすべての回答(Windows/WAMPの場合)、つまり他の拡張機能をロードし、php.ini extension_dirパスを変更すること(これが最初に間違っていた場合、拡張機能なし)読み込みなど)、a)extension = php_mbstring.dll行のコメント解除、またはb)Apacheまたはコンピューターの再起動(変更を有効にするため)。

Windowsでは、ほとんどの場合、php_mbstring.dllは次のいずれかです。

  • Windowsによってブロックされました。右クリックしてブロックを解除し、[プロパティ]をチェックします。

  • または、PHPは、別のバージョンがロードされるためにphp_mbstring.dllをロードできません(たとえば、一部の不適切なPHP DLLがC:\ Windows\system32にインストールされる)、バージョンの不一致、欠落ランタイムDLLなど。最初に、ApacheおよびPHPのエラーログファイルを調べて、手がかりを探します。

詳細な回答はこちら: 未定義関数mb_detect_encodingの呼び出し

2
rightstuff

Ubuntu 17でも同じ問題がありました。Ispconfigはあらゆる種類のキュー操作を処理していませんでした。また、server.shコマンドも機能していませんでした。 OSのアップグレード後の実行中のPHPバージョンを確認し、7.1であったため、解決策は次のように入力することでした。

apt-get install php7.1-mbstring

そして今は大丈夫です

1

問題は、PHPIniDirを正しく設定しないと、Apacheがphp.iniを見つけられないことです。鉱山は次のように設定されました:PHPIniDir "c:/ php7"しかし、フォルダは実際には "php"です。手掛かりはphpinfo()を表示していました。

1
ironarm

すべての言語を使用している場合は、php.inファイルですべての言語mbstringを有効にする必要があります。英語バージョンのphpmyadminのみを使用する必要があります。

1
user2615161

これがいくつかのPPLに役立つことを願っています.php.iniファイルの「docref_root」「docref_ext」にパスと拡張子を追加したときにこのエラーが発生し、それをコメントアウトして大丈夫でしたが、今すぐ助けてもらうことはできません。

0
Vasko

Fedoraの場合:

yum install php-mbstring

次に、Apacheを再起動します

0
user3413723