web-dev-qa-db-ja.com

PHP phpmyadmin mb_detect_encodingにアクセスしようとすると致命的なエラーが発生する

何が起こったのかはわかりませんが、phpmyadminにアクセスしようとしたときにログから得られるものは以下のとおりです。別の問題をデバッグしようとして、これに遭遇しました。動作していた時点に戻すことは実際には不可能です。

PHP致命的エラー:177行目の/usr/share/php/gettext/gettext.incの未定義関数mb_detect_encoding()の呼び出し

サイトにアクセスしようとすると、このエラーが発生します。2つのエラーが関連していると思われます。

データベース接続エラー(1):MySQLアダプター 'mysqli'は使用できません。

18
milan

拡張機能mbstringがインストールされていないかアクティブでないため、最初のエラーはphpが原因です。

2番目のエラーは、phpMyAdmin/yourサイトの出力で、mysqli拡張機能をインストール/有効にするように求めています。

Mbstringとmysqliを有効にするには、php.iniを編集し、unixのmbstring.soとmysqli.so、またはWindowsのmbstring.dllとmysqli.dllで2行を追加/コメント解除します。

Unix /etc/(phpX/)php.ini

extension=mysqli.so
extension=mbstring.so

Windows PHPインストールフォルダー\ etc\php.ini

extension=mysqli.dll
extension=mbstring.dll

この後、Webサーバーを再起動することを忘れないでください。

編集:ユーザーがコメントでredhatを使用していると付け加えたので、CentOS/Fedora/RedHat/YumベースのすべてのLinuxディストリビューションに拡張機能をインストールする方法は次のとおりです

Sudo yum install php-mysqli
Sudo yum install php-mbstring

restart your werbserver
Sudo /etc/init.d/httpd restart

ドキュメントルートにある小さなphpスクリプトでインストールを確認できます。これは、PHP用にインストールしたすべての設定、バージョン、およびアクティブな拡張機能を一覧表示します

test.php

<?php
phpinfo();
26
Michel Feldheim

Extension_dir = "ext"について読んだ後、php.iniに行を追加しましたが、動作しませんでした。Apacheエラーログを探し始め、PHPは実際にdllを見つけることができませんでした指定されたディレクトリ「ext」。extension_dir行にコメントし、Apacheを再起動し、エラーログをもう一度調べたところ、PHPはC:/ PHP/ext(デフォルトではi推測)が、他のフォルダを使用しているので、それは正しいパスではないので、extension_dir行のコメントを外してこれを書いた:

extension_dir = "C:/Apache24/PHP/ext" 

私の構成では、dllへの正しいパスです。

そしてもちろん、コメントなし:

extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll

Apacheサーバーとインターネットブラウザを再起動し、phpMyAdminがmySQLログインで機能するようになりました。

そのため、dllの間違ったパスと、php.iniでコメントが必要なDLLが問題でした。

構成ファイルを編集した後、Apacheとインターネットブラウザを再起動することを忘れないでください。

システム仕様:Windows 7 HB 64bit httpd-2.4.4-win32-ssl_0.9.8.Zip php-5.4.16-Win32-VC9-x86.Zip phpMyAdmin-4.0.4.1-all-languages.Zip mysql-installer-community- 5.6.11.0.msi

この助けを願っています。あなたのコメントもTHX。

10
phpNoob

ubuntu 16.04でphpmyadminに接続しようとしたときに白い空白のページが表示されたので、上記のコマンドを実行してphpmyadminが動作します

Sudo apt-get install php-mbstring php7.0-mbstring php-gettext

mysqlサポートインストール用

Sudo apt-get install php7.0-mysql

pHP 7バージョンを使用してubuntu 16.04でテスト済み

PHPインストールには mbstring extension および mysqli adapter extension がインストールされていないようです。

phpinfo();を確認するか、ターミナルでphp -i | grep 'mbstring\|mysqli'を実行してください。

3
Koen.

私はwindows7-32ビットでも同じ問題を抱えていました:

1.「PHPの致命的なエラー:177行目の/usr/share/php/gettext/gettext.incの未定義関数mb_detect_encoding()の呼び出し」

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
Rajeev Ranjan

php.iniでは、変更する必要がありました

extension_dir = "ext"

extension_dir = "C:/PHP/ext"

私のPHPはC:\PHPにインストールされていました。/の代わりに\を使用する必要があり、それが機能しました。

また、mbstringsmysqli、およびmysql拡張のコメントを外します。

2

MbstringでPHPを再コンパイルします。

./configure --enable-http --with-apxs2 --with-mysql --with-Gd --with-curl --with-mbstring

make 

make install
1
Harikrishnan

(WindowsでXAMPPを使用して)私を助けたのは:

  • 私のパスにPHPの正しいパスが含まれていることを確認してください(2つのPHPインストールがあり、1つはc:\phpの下にあり、XAMPPインストールはc:\xampp\phpにありました私が使いたかったもの)
  • 行を確認してください
    extension_dir="C:\xampp\php\ext"
    extension=php_mbstring.dll
    extension=php_exif.dll ; Must be after mbstring as it depends on it
    php.iniファイルのコメントを外しました(つまり、先頭に;がありません)
  • apacheサーバーを再起動します
  • 最後になりましたが、ページをリロードするときにキャッシュをクリアしますhttp://localhost/phpmyadmin/(たとえば、ChromeでCtrl-F5を使用)
1
user2314737

install mysqliおよびpdoを試してください。ターミナルに置きます:

./configure --with-mysql=/usr/bin/mysql_config  \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd
0
RDK

私は同じトラブルを抱えていました。これが私にとってうまくいったことです。

Wampserverアイコンをクリックしてから、PHPエラーログで。クリックしてください。Unable to load dynamic library 'c:/wamp/bin/php/php5.5.12/ext/php_ldap.dll'

「はい」の場合、wampserverアイコンをクリックし、次にPHP、次にバージョンをクリックし、次にバージョンをクリックして、PHPのバージョンをリロードできます。すべてが再びオンラインになるのを待ってから、phpmyadminにアクセスしてみてください。

0
DBr
  1. Windowsの一部のバージョンには、mysqlおよびmysqli拡張機能をロードするために必要なlibmysql.dllが付属していません。 C:/Windows/System32(windows 7、32ビット)で使用可能かどうかを確認します。そうでない場合は、 DLL-files.com をダウンロードして、C:/ Windows/System32にインストールできます。
  2. これが続く場合は、Apacheログファイルを確認し、上記の解決策を使用して、サーバーが記録したエラーに対応します。
0
che-azeh

私の推測では、mysqli拡張モジュールがPHP構成で有効になっていることを確認します。詳細情報(OS、AMPスタックなど)が素晴らしいでしょう。

Mysqliのphp.ini設定をチェックインし、「;」がないことを確認します拡張機能の前に。私のセットアップで有効になっているのはphp_mysqli_libmysql.dllです。

0
thorne51

Windows 2008 Server。

私は削除しました ";" php.iniファイルのextension = php_mbstring.dllの前で動作しました...リンクを辿りました...

https://bugs.php.net/bug.php?id=64965

0
shashikanth

Windowsで試してみたところ、PHP installation folder\etc\php.ini

extension=mysqli.dll 
extension=mbstring.dl

また、iniファイルで次を有効にする必要があります。

extension_dir = "ext"

phpMyadminは現在機能しています!

0
amitgoswami

1つのオプション:このextension_dir = "ext"を無効にする

もう1つは:

ワンプアイコンに移動し、phpを表示し、phpエラーログをクリックすると、エラーログuから正確なエラーを見つけることができます。

このエラーは、パスが適切に設定されていない場合にのみ発生します。

0
S Ali Khan