Неустранимая ошибка PHP при попытке доступа к phpmyadmin mb_detect_encoding

Не уверен, что произошло, но ниже показано, что мне дает журнал при попытке доступа к phpmyadmin, пожалуйста, помогите. Пытался отладить другую проблему и столкнулся с этим. Невозможно вернуться назад, когда он работал.

Неустранимая ошибка PHP: вызов неопределенной функции mb_detect_encoding() в /usr/share/php/gettext/gettext.inc в строке 177

При попытке перейти на сайт я получаю эту ошибку, я думаю, что две ошибки связаны:

Ошибка подключения к базе данных (1): адаптер MySQL «mysqli» недоступен.


person milan    schedule 12.11.2012    source источник
comment
Да, но я не думаю, что это проблема Joomla. Joomla не может подключиться к базе данных.   -  person milan    schedule 13.11.2012
comment
Решил удалить сервер и начать заново, на новом все работает нормально. всем спасибо.   -  person milan    schedule 13.11.2012


Ответы (15)


Первая ошибка вызвана php, потому что расширение mbstring либо не установлено, либо не активно.

Вторая ошибка выводится phpMyAdmin/вашим сайтом с просьбой установить/включить расширение mysqli.

Чтобы включить mbstring и mysqli, отредактируйте файл php.ini и добавьте/раскомментируйте две строки с помощью mbstring.so и mysqli.so в Unix или mbstring.dll и mysqli.dll в Windows.

Unix /etc/(phpX/)php.ini

extension=mysqli.so
extension=mbstring.so

Папка установки Windows PHP\etc\php.ini

extension=mysqli.dll
extension=mbstring.dll

Не забудьте после этого перезагрузить веб-сервер.

РЕДАКТИРОВАТЬ: пользователь добавил, что он использует RedHat в комментариях, поэтому вот как вы устанавливаете расширения на все дистрибутивы Linux на основе CentOS/Fedora/RedHat/Yum.

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();
person Michel Feldheim    schedule 12.11.2012
comment
Я открыл файл php.ini, но не вижу mbstring.so или mysqli.so. я на линуксе. - person milan; 13.11.2012
comment
какой дистрибутив линукса вы используете? - person Michel Feldheim; 13.11.2012
comment
Я добавил оба из них, и все равно не повезло - person milan; 13.11.2012
comment
на redhat вы должны иметь возможность устанавливать расширения таким образом (если у вас есть root-доступ) sudo yum install php-mbstring php-mysqli - person Michel Feldheim; 13.11.2012
comment
Пакет php-mbstring-5.4.8-1.el6.remi.x86_64 уже установлен и последняя версия Пакет php-mysql-5.4.8-1.el6.remi.x86_64 уже установлен и последняя версия Нечего делать - person milan; 13.11.2012

Прочитав о extension_dir = "ext", я добавил строку в php.ini, но она не работала, затем начал просматривать журнал ошибок apache и увидел, что PHP фактически не смог найти dll в указанном каталоге "ext". Я прокомментировал строку extension_dir, перезапустил Apache и снова посмотрел журнал ошибок, увидел, что PHP теперь ищет dll в C:/PHP/ext (по умолчанию, я думаю), но поскольку я использую другие папки, это не правильный путь, поэтому я раскомментировал строку 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 и необходимости прокомментировать dll в php.ini.

Не забудьте перезапустить Apache и интернет-браузер после редактирования файлов конфигурации.

Спецификация системы: Windows 7 HB 64-разрядная httpd-2.4.4-win32-ssl_0.9.8.zip php-5.4.16-Win32-VC9-x86.zip 5.6.11.0.msi

Надеюсь, это поможет. Спасибо за ваши комментарии.

person phpNoob    schedule 05.07.2013

в Ubuntu 16.04, когда я попытался подключиться к phpmyadmin, появилась белая пустая страница, поэтому я выполнил указанную выше команду, и phpmyadmin работает

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

для установки поддержки mysql

sudo apt-get install php7.0-mysql

протестировано в Ubuntu 16.04 с версией php 7

person Dimitris Kougioumtzis    schedule 01.05.2016
comment
Должно быть comment вместо answer. Прочитайте здесь, как ответить :) - person Variable; 01.05.2016
comment
Это решает проблему для меня на Ubuntu Server 16.04. Спасибо Димитрис. - person Mirsad Batilovic; 14.09.2016
comment
Это сработало для меня! Ранее я включил display_errors в php.ini, что позволило мне перейти к этому сообщению. - person Steve; 15.10.2016

Похоже, что в вашей установке PHP нет расширения mbstring и < установлено href="http://www.php.net/manual/en/mysqli.installation.php" rel="nofollow">расширение адаптера mysqli.

Пожалуйста, проверьте свой phpinfo(); или запустите php -i | grep 'mbstring\|mysqli' в терминале.

person Koen.    schedule 12.11.2012
comment
Я запустил phpinfo. Что я должен искать? - person milan; 13.11.2012
comment
Или его отсутствие. В этом случае это означает, что вы должны установить их. - person Koen.; 13.11.2012
comment
в команде configure у меня есть: mysql=shared,/usr' '--with-mysqli=shared,/usr/lib64/mysql/mysql_config' '--... в дополнительном разделе проанализированных файлов .ini у меня есть ql .ini, /etc/php.d/mysqli.ini, /etc/php.d/oci8.in и в дополнительном разделе анализируемых файлов .ini у меня есть .d/json.ini, /etc/php.d/mbstring .ini, /etc/php.d/mcrypt - person milan; 13.11.2012
comment
Я почти уверен, что mbstring установлен, потому что yum install php-mbstring сказал, что он установлен - person milan; 13.11.2012
comment
Вы перезапускали php после этого? - person Koen.; 13.11.2012
comment
давайте продолжим это обсуждение в чате - person Koen.; 13.11.2012

У меня была такая же проблема на моем windows7-32 бит:

1. "Неустранимая ошибка PHP: вызов неопределенной функции mb_detect_encoding() в /usr/share/php/gettext/gettext.inc в строке 177"

когда я открыл файл php.ini, строка «extension_dir» выглядела следующим образом:

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

который я изменил на:

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

и это сработало.

person Rajeev Ranjan    schedule 24.10.2013
comment
Этот ответ помог мне. - person Germstorm; 18.01.2014
comment
Еще помог этот. - person user1954544; 23.01.2014

В php.ini мне пришлось изменить

extension_dir = "ext"

to

extension_dir = "C:/PHP/ext"

так как мой PHP был установлен в C:\PHP. Мне пришлось использовать / вместо \, и тогда это сработало.

Также раскомментируйте расширения mbstrings, mysqli и mysql.

person Fernando Maffeis    schedule 15.05.2014
comment
Удалите комментарий (;) из этих расширений extension=php_mbstring.dll и extension=php_mysqli.dll и extension=php_gettext.dll - person Manoj Kumar; 29.07.2016

Что мне помогло (используя XAMPP в Windows):

  • убедитесь, что мой путь включает правильный путь для PHP (у меня было две установки PHP, одна в 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 (т.е. нет ; в начале)
  • перезапустить сервер апача
  • последнее, но не менее важное: очищайте кеш при перезагрузке страницы http://localhost/phpmyadmin/ (например, с помощью Ctrl-F5 в Chrome)
person user2314737    schedule 15.10.2013

Перекомпилируйте PHP с помощью mbstring.

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

make 

make install
person Harikrishnan    schedule 25.09.2014
comment
его --enable-mbstring - person Kinetic; 05.03.2015

Думаю, нужно проверить, включено ли расширение mysqli в вашей конфигурации PHP. Было бы здорово получить больше информации (например, ОС, стек AMP и т. д.).

Проверьте конфигурацию php.ini для mysqli и убедитесь, что нет ';' перед расширением. В моей настройке включена php_mysqli_libmysql.dll.

person thorne51    schedule 12.11.2012
comment
Также ссылаясь на ответ Коэна Dido для mbstring в файле php.ini. php_mbstring.dll - person thorne51; 13.11.2012

Попробуйте установить mysqli и pdo. Поместите его в терминал:

./configure --with-mysql=/usr/bin/mysql_config  \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd
person RDK    schedule 12.11.2012
comment
Довольно предположение думать, что кто-то использует joomla, когда он публикует общую ошибку PHP. - person Koen.; 13.11.2012
comment
Вместо того, чтобы позволить OP перейти на древний API, было бы лучше, ИМХО, позволить OP установить mysqli (если это действительно проблема OP). - person PeeHaa; 13.11.2012
comment
extension = php_mysqli.dll у вас есть это в вашем файле php.ini - person RDK; 13.11.2012
comment
@RadikCH У меня нет расширения = php_mysqli в моем файле php.ini - person milan; 13.11.2012
comment
Если у вас его нет, добавьте extension = php_mysqli.dll в php.ini. - person RDK; 13.11.2012
comment
все еще с той же проблемой. Я собираюсь опубликовать свой файл php.ini - person milan; 13.11.2012

Я попробовал в Windows, и у меня возникла такая же проблема после включения этого в PHP installation folder\etc\php.ini:

extension=mysqli.dll 
extension=mbstring.dl

Вы также должны включить следующее в файле ini:

extension_dir = "ext"

phpMyadmin теперь работает!

person amitgoswami    schedule 26.05.2013

В Windows 2008 сервер.

Я удалил ";" перед extension=php_mbstring.dll в файле php.ini, и это сработало... я перешел по ссылке ниже...

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

person shashikanth    schedule 21.06.2013

  1. Некоторые версии Windows не поставляются с libmysql.dll, необходимой для загрузки расширений mysql и mysqli. Проверьте, доступен ли он в C:/Windows/System32 (Windows 7, 32 бита). Если нет, вы можете скачать его DLL-files.com и установите его в C:/Windows/System32.
  2. Если это не устраняется, проверьте файлы журнала apache и прибегните к решению, описанному выше, которое отвечает на ошибку, зарегистрированную вашим сервером.
person Community    schedule 06.04.2014

Один из вариантов: отключить это extension_dir = "ext"

а другой:

перейдите к значку wamp и посмотрите php и щелкните журналы ошибок php, затем из журнала ошибок вы можете найти точную ошибку.

эта ошибка возникает только в том случае, если пути заданы неправильно.

person S Ali Khan    schedule 11.12.2014

У меня была такая же проблема, это то, что сработало для меня.

Вы можете щелкнуть значок wampserver, а затем журнал ошибок PHP. Проверьте, написано ли это: Unable to load dynamic library 'c:/wamp/bin/php/php5.5.12/ext/php_ldap.dll'

Если да, то вы можете перезагрузить свою версию PHP, щелкнув значок wampserver, затем PHP, затем версию, а затем щелкнув свою версию. Подождите, пока все снова будет в сети, затем попробуйте получить доступ к phpmyadmin.

person DBr    schedule 02.03.2015