web-dev-qa-db-fra.com

PHP Erreur fatale lors d'une tentative d'accès à phpmyadmin mb_detect_encoding

Je ne sais pas ce qui s'est passé, mais voici ce que le journal me donne lorsque j'essaie d'accéder à phpmyadmin. Essayer de déboguer un problème différent et couru dans cela. Pas vraiment possible de revenir à l'époque où cela fonctionnait. 

Erreur irrécupérable PHP: appel de la fonction non définie mb_detect_encoding () dans /usr/share/php/gettext/gettext.inc à la ligne 177

En essayant d’aller sur le site, j’obtiens cette erreur, je pense que les deux erreurs sont probablement liées: 

Erreur de connexion à la base de données (1): l'adaptateur MySQL 'mysqli' n'est pas disponible.

18
milan

La première erreur est causée par php car l'extension mbstring n'est pas installée ou n'est pas active.

La deuxième erreur est la sortie de phpMyAdmin/votre site vous demandant d'installer/activer l'extension mysqli.

Pour activer mbstring et mysqli, éditez votre php.ini et ajoutez/décommentez les deux lignes avec mbstring.so et mysqli.so sous unix ou mbstring.dll et mysqli.dll sous Windows

Unix /etc/(phpX/)php.ini

extension=mysqli.so
extension=mbstring.so

Dossier d'installation de Windows PHP\etc\php.ini

extension=mysqli.dll
extension=mbstring.dll

N'oubliez pas de redémarrer votre serveur Web après cela.

EDIT: L’utilisateur a ajouté qu’il utilisait redhat dans les commentaires. Voici comment installer des extensions sur toutes les distributions Linux basées sur CentOS/Fedora/RedHat/Yum.

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

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

vous pouvez vérifier votre installation avec un petit script php dans la racine de votre document . Ceci répertorie tous les paramètres, versions et extensions actives que vous avez installées pour php.

test.php

<?php
phpinfo();
26
Michel Feldheim

Après avoir lu à propos de l'extension_dir = "ext", j'ai ajouté la ligne à php.ini mais cela n'a pas fonctionné, puis j'ai commencé à regarder le journal des erreurs Apache et j'ai constaté que PHP était en fait incapable de trouver la DLL dans le répertoire spécifié "ext ". J'ai commenté la ligne extension_dir, redémarré Apache et regardé à nouveau le journal des erreurs, vu que PHP cherchait maintenant la dll en C:/PHP/ext (par défaut, je suppose), mais depuis que j'utilise d'autres dossiers, ce n'est pas le chemin correct, donc j'ai commenté la ligne extension_dir et écrit ceci:

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

Dans ma configuration, c'est le chemin correct pour les DLL.

et bien sûr, sans commentaire: 

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

Le serveur Apache et le navigateur Internet ont été redémarrés et phpMyAdmin fonctionne maintenant avec mon identifiant mySQL.

Donc, le chemin incorrect de la DLL et les DLL nécessaires à commenter dans php.ini étaient le problème.

N'oubliez pas de redémarrer Apache et le navigateur Internet après avoir modifié les fichiers de configuration.

Spéc. Système: Windows 7 HB 64 bits 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

J'espère que cette aide. Merci pour vos commentaires aussi.

10
phpNoob

dans Ubuntu 16.04 quand j’essayais de me connecter à phpmyadmin, un blanc paginé apparaissait donc j’ai lancé la commande ci-dessus et phpmyadmin fonctionne 

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

pour l'installation du support mysql

Sudo apt-get install php7.0-mysql

testé dans Ubuntu 16.04 avec php 7 version 

Il semble que votre installation PHP ne possède pas l'extension mbstring ni l'extension mysqli installed.

Veuillez vérifier votre phpinfo(); ou exécuter php -i | grep 'mbstring\|mysqli' dans un terminal.

3
Koen.

J'ai eu le même problème sur mon windows7- 32 bit: 

1. "Erreur irrécupérable PHP: appel de la fonction non définie mb_detect_encoding () dans /usr/share/php/gettext/gettext.inc à la ligne 177"

quand j'ai ouvert mon fichier php.ini, la ligne "extension_dir" ressemblait à ceci:

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

que j'ai changé en:

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

et cela a fonctionné.

3
Rajeev Ranjan

En php.ini, je devais changer

extension_dir = "ext"

à

extension_dir = "C:/PHP/ext"

comme mon PHP a été installé dans C:\PHP. Je devais utiliser / au lieu de \, et ensuite cela a fonctionné. 

Décommentez également les extensions mbstrings, mysqli et mysql.

2
Fernando Maffeis

Recompiler PHP avec mbstring.

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

make 

make install
1
Harikrishnan

Ce qui m’a aidé (avec XAMPP sous Windows) a été de:

  • assurez-vous que mon chemin contient le chemin correct pour PHP (j'avais deux installations PHP , une sous c:\php et l'installation XAMPP dans c:\xampp\php, celle que je voulais utiliser).
  • vérifier que les lignes
    extension_dir="C:\xampp\php\ext"
    extension=php_mbstring.dll
    extension=php_exif.dll ; Must be after mbstring as it depends on it
    n'ont pas été commentés dans le fichier php.ini (c'est-à-dire pas ; au début)
  • redémarrer le serveur Apache
  • last but not least, effacez le cache lors du rechargement de la page http://localhost/phpmyadmin/ (par exemple avec Ctrl-F5 dans Chrome)
1
user2314737

Essayez de installer mysqli et pdo .

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

J'ai eu le même problème, c'est ce qui a fonctionné pour moi. 

Vous pouvez cliquer sur l'icône wampserver, puis sur le journal des erreurs PHP. Vérifiez s’il est écrit ceci: Unable to load dynamic library 'c:/wamp/bin/php/php5.5.12/ext/php_ldap.dll'

Si oui, alors vous pouvez recharger votre version de PHP en cliquant sur l'icône wampserver, puis sur PHP, puis sur version, puis sur votre version Attendez que tout soit à nouveau en ligne, puis essayez d’accéder à phpmyadmin.

0
DBr
  1. Certaines versions de Windows ne viennent pas avec libmysql.dll qui est nécessaire pour charger les extensions mysql et mysqli. Vérifiez si elle est disponible dans C:/Windows/System32 (Windows 7, 32 bits). Sinon, vous pouvez le télécharger DLL-files.com et l'installer sous C:/Windows/System32. 
  2. Si cela persiste, vérifiez vos fichiers journaux Apache et utilisez une solution ci-dessus qui répond à l'erreur consignée par votre serveur.
0
che-azeh

Mon hypothèse serait de vérifier que l'extension mysqli est activée dans votre configuration PHP. Plus d'informations seraient utiles (par exemple, système d'exploitation, pile AMP, etc.).

Vérifiez votre configuration php.ini pour mysqli et assurez-vous qu'il n'y a pas de ';' devant l'extension. Celui activé sur ma configuration est php_mysqli_libmysql.dll.

0
thorne51

Dans Windows 2008 Server.

j'ai enlevé ";" devant l'extension = php_mbstring.dll dans le fichier php.ini et cela a fonctionné ... j'ai suivi le lien ci-dessous ... 

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

0
shashikanth

J'ai essayé sur Windows et j'obtenais le même problème après l'activation de ceci dans PHP installation folder\etc\php.ini:

extension=mysqli.dll 
extension=mbstring.dl

Vous devez également activer les éléments suivants dans le fichier ini:

extension_dir = "ext"

phpMyadmin fonctionne maintenant!

0
amitgoswami

Une des options est: Disabled this extension_dir = "ext"

et l'autre est:

allez sur l'icône de wamp et voir php et le clic sur les journaux des erreurs php puis à partir du journal des erreurs vous pourrez trouver l'erreur exacte.

cette erreur se produit uniquement si les chemins d'accès ne sont pas correctement définis.

0
S Ali Khan