web-dev-qa-db-fra.com

Erreur fatale: Erreur non capturée: L'appel d'une fonction membre existe () sur null dans C:\xampp\phpMyAdmin\bibliothèques\classes\DatabaseInterface.php: 1544

Je viens d'installer Xampp 7.2.4 et j'obtiens l'erreur suivante en essayant d'ouvrir ADMIN pour MySQL dans xampp Control Panel v3.2.2. J'avais cette configuration sur un autre poste de travail, le même système d'exploitation (Windows Server 2012 R2), la même version de xampp, mais l'erreur que je reçois n'a pas de sens pour moi ... pas de cela? Déjà comparer les deux installer et ils se ressemblent.

Fatal error: Uncaught Error: Call to a member function exists() on null in C:\xampp\phpMyAdmin\libraries\classes\DatabaseInterface.php:1544 Stack trace: 
#0 C:\xampp\phpMyAdmin\libraries\classes\DatabaseInterface.php(2477): PhpMyAdmin\DatabaseInterface->postConnectControl() 
#1 C:\xampp\phpMyAdmin\libraries\common.inc.php(358): PhpMyAdmin\DatabaseInterface->connect(257) 
#2 C:\xampp\phpMyAdmin\index.php(26): require_once('C:\\xampp\\phpMyA...') 
#3 {main} thrown in C:\xampp\phpMyAdmin\libraries\classes\DatabaseInterface.php on line 1544
2

Je viens d'avoir la même erreur après un arrêt brutal de MySQL. 

Après avoir localisé l'erreur dans le code, il s'est avéré que c'était le cookie du navigateur qui était corrompu, empêchant PHPMyAdmin d'extraire la liste des bases de données.

Dans Google Chrome, vous pouvez éliminer les cookies en:

  1. Accédez à votre page PHPMyAdmin: http: // localhost/phpmyadmin/
  2. Appuyez sur la touche F12 pour ouvrir les outils de développement.
  3. Dans le menu du haut, allez à l'onglet "application"
  4. Dans le menu de gauche, cliquez sur l'option "clear storage".
  5. Cliquez sur le bouton "Effacer les données du site".

 Flush cookie with Chrome developer tools

Allez à xampp/phpmyadmin/libraries/classes/databaseintreface Ouvrez en texte sublime, allez à la ligne 1535, le code est écrit ainsi. ..

2
Hemant

dans la ligne 1544, modifiez "if ($ GLOBALS ['dblist'] -> bases de données-> existe ('phpmyadmin'))" " pour" if ($ GLOBALS ['dblist'] -> bases de données-> existe ( 'phpMyAdmin')) ".

1
beto33

Cette réponse améliore les réponses précédentes:

  1. Éditez le fichier DatabaseInterface.php
  2. Recherchez la fonction suivante: postConnectControl
  3. Commenter le corps de la fonction (Voir l'image)
  4. Enregistrez le fichier.
  5. Facultatif: redémarrez le serveur Web HTTP Apache à partir deXAMPP

La fonction doit être semblable à ceci:

public function postConnectControl()
    {
        // If Zero configuration mode enabled, check PMA tables in current db.
        // if ($GLOBALS['cfg']['ZeroConf'] == true) {
            // if (strlen($GLOBALS['db'])) {
                // $cfgRelation = $this->relation->getRelationsParam();
                // if (empty($cfgRelation['db'])) {
                    // $this->relation->fixPmaTables($GLOBALS['db'], false);
                // }
            // }
            // $cfgRelation = $this->relation->getRelationsParam();
            // if (empty($cfgRelation['db'])) {
                // if ($GLOBALS['dblist']->databases->exists('phpmyadmin')) {
                    // $this->relation->fixPmaTables('phpmyadmin', false);
                // }
            // }
        // }
    }

</ pre> </ code>

0
Ieshua

Je pense que vous utilisez un IDE Android Studio. Ce qui nécessite PHP Mon administrateur en tant que base de données. Une fois que vous avez connecté votre base de données à votre application. Cela va gâcher votre PHP mon administrateur. Essayez de fermer d'abord l'application, puis redémarrez votre application XAMPP. J'espère que ça aide!

0
Anthony

Vous pouvez commenter en toute sécurité les lignes 1543 à 1547 si vous avez déjà créé la base de données phpmyadmin, ce qui est le cas avec XAMPP, et cela fonctionnerait parfaitement.

if ($GLOBALS['cfg']['ZeroConf'] == true) {
    if (strlen($GLOBALS['db'])) {
        $cfgRelation = $this->relation->getRelationsParam();
        if (empty($cfgRelation['db'])) {
            $this->relation->fixPmaTables($GLOBALS['db'], false);
        }
    }
    $cfgRelation = $this->relation->getRelationsParam();
    // if (empty($cfgRelation['db'])) {
    //     if ($GLOBALS['dblist']->databases->exists('phpmyadmin')) {
    //         $this->relation->fixPmaTables('phpmyadmin', false);
    //     }
    // }
}
0
josemmo