Uncaught Error: Call to undefined function mysqli_connect()

Résolu

Bonjour,

j'ai installé PHP-8.4.3

MySQL-8.0.40

Apache2.4

lorsque j'ouvre une application avec des bases MysQl

lors de la tentative d'ouverture de la base de données avec la commande:

$db = mysqli_connect('localhost', 'root', 'oaxaca', 'archerie_tests');
if (mysqli_connect_errno())
  {
   echo 'Erreur: Connexion impossible à la base: ARCHERIE';
   exit;
  }

la réponse du serveur est:

Fatal error: Uncaught Error: Call to undefined function mysqli_connect() 

j'ai vérifié que 1) la mysqli.dll est bien dans /ext de php

                       2) l'extension mysqli est bien affectée dans le php.ini

                         ;extension=exif      ; Must be after mbstring as it depends on it
                         extension=mysqli
                         ;extension=odbc

Je précise que commee mon pc est isolé j'ai choisi d'utiliser comme fichier php.ini:

   le php.ini de developpement et j'ai retiré de /PHP le php.ini de production que j'ai soigneusement mis de côté au cas ou?

j'ai omis de préciser qu'auparavant toute mon application à été bâtie avec:

PHP 5

MySQL 6

Apache 2.2

8 réponses

  1.  Bonjour

    Bonne nouvelle j'ai trouvé la solution en plusieurs points:

    j'avais installé PHP sous c: \Program Files \PHP8

    lors du passage de la commande php -m mysqli est bien présente mais dans phpinfo(INFO_MODULES) elle n'apparait pas.

    j'ai donc fait des recherches avec la fonction  php -i

    et là php m'annoncait qu'il ne trouvait ps le module c::/php/ext/mysqli 

    j'ai donc créé un répertoire C:\php et j'y ai transféré  le contenu de PHP8

    et sur la commande php -i il n'y avait plus d'anaomalie.

    j'ai donc relancé mona ppli sql et j'ai eu le même résultat qu'avant à savoir pb avec mysql_connect not found

    j'ai alors ouvert le fichier php où je demande l'ouverture de la base de données MySQL et ce programme à été écrit pour du MySQL 6.0 et à cette époque l'ouverture de la base se fasiait :

    $db = new mysqli('localhost', 'root', 'oaxaca', 'archerie_tests');

    j'ai donc remplacé le 'new  mysqli' par 'mysqli_connect'

    et voilà

    Contrairement à vous je suis un informaticien de la vieille école, je suis tombé dans la marmite au temps des ordinateurs à lampes et des cartes perforées et comme tous les gens de mon époque on aime bien trouver le pourquoi du comment , quite à se faire aider par la jeune génération quand çà coince trop.

    Merci beaucoup pour vos conseils

    Papita47

    0
    1. Modérateur

      bonsoir, il serait bien que tu nous fasses une capture écran du résultats du PHPinfo.

      il faudrait également nous montrer quelles extensions ont été chargées dans ce fichier. 

      et enfin, pourquoi ne pas avoir suivi mon conseil qui était d'utiliser un logiciel tel que laragon plutôt que d'essayer d'installer toi-même les différents logiciels sur ton ordinateur. ?

      0
      1. je disais donc que le php.ini est dan ces 2 directories et pourtant phpinfo ne le trouve pas.

        la vriable PAth users et générale pour PHP est: C:\Program Files\PHP

        0
        1. est-ce que la variable PHPInidir fonctionne bien en Apache2.4?

          Quelle que soit la valeur que je lui donne:

          # configure the path to php.ini
          PHPIniDir "C:/Windows/"

          # before PHP 8.0.0 the name of the module was php7_module

          LoadModule php_module "C:/Program Files/PHP/php8apache2_4.dll"
          <FilesMatch \.php$>
              SetHandler application/x-httpd-php
          </FilesMatch>
           

          ou 

          PHPIniDir "C:/Program Files/PHP/"

          le résultat est le même

          le php.ini est présent dans ces 2 diretories

          D'autre pert mes aplli développées en PHP5.x fonctionnent bien jusqu'à solliciter l'ouverture d'une base là j'i un message d'erreur sur mysqli_connect() not found

          0
          1. Bonjour,

            "Configuration File (php.ini) Pathno value" indique que PHP ne trouve pas de fichier de configuration php.ini

            L'exécutable php.exe indiqué dans ta variable d'environnement PATH n'as pas de de rapport avec le fichier de configuration.
            La localisation du fichier de configuration php.ini peut être défini via la variable d'environnement PHPRC mais par défaut PHP utilise le fichier php.ini qui se trouve dans le même dossier que l'exécutable php.exe

            Il faudrait en savoir plus sur comment a été installé PHP et Apache et quelle est la configuration d'Apache pour pouvoir mieux t'aider.

            Si ce n'est pas déjà fait, pense à redémarre Apache lors tu modifies des configurations.

            Plus d''infos : https://www.php.net/manual/fr/configuration.file.php

            0
            1. windows 11

              mais Apache fonctionne

              Mysql fonctionne

              PHP le seul problème c'est l'absence apparente de mysqli

              0
              1. Bonjour,

                tout d'abord  merci pour les conseils.

                un gros progrès dans mon problème de php

                j'ai listé les fichiers de php avec leurs extensions et c'est comme çà que j'ai eu la surprise de voir que  le fichier php.ini s'appelait en réalité:

                php.ini.ini.de developpement.

                je l'ai renommé php.ini il est  concidéré comm efichier de conf.

                et dans phpinfo j'ai enfin:

                Configuration File (php.ini) Pathno value

                Loaded Configuration FileC:\Program Files\PHP8\php.ini

                par contre en ce qui concerne le pb de mysqli le mystère reste entier.

                Papita47

                0
            2. Bonjour

              Pour la requête phpinfo(INFO_GENERAL);

              dans la réponse j'ai: Configuration File (php.ini) Pathno value

              or dans les variables d'environment PHP est bien défini dans le PATH:

              C:\Program Files\PHP

              dans la requête phpinfo(INFO_MODULES);

              j'ai le module mysqlnd de présent

              et dans la requête print_r(get_loaded_extensions());

              la seule extension présente pour MySQL est :  [22] => mysqlnd

              mais dans toutes les requêtes je ne trouve aucune trace de mysqli

              0
              1. Modérateur

                bonjour 

                c'est un phpinfo  et montre-nous l chemin du fichier php ini qui est indiqué comme celui qui est utilisé etles informations concernant l'extension mysqli

                https://www.php.net/manual/fr/function.phpinfo.php

                https://kinsta.com/fr/base-de-connaissances/phpinfo/

                au passage, sous quel OS es-tu ?

                si jamais tu es sur Windows, plutôt que d'installer chaque ogiciel séparément je t'invite à utiliser un logiciel qui émule directement un serveur web tel que laragon.


                0
                1. Bonsoir,

                  tout d'abord  merci pour les conseils.

                  un gros progrès dans mon problème de php

                  j'ai listé les fichiers de php avec leurs extensions et c'est comme çà que j'ai eu la surprise de voir que  le fichier php.ini s'appelait en réalité:

                  php.ini.ini.de developpement.

                  je l'ai renommé php.ini il est  concidéré comm efichier de conf.

                  et dans phpinfo j'ai enfin:

                  Configuration File (php.ini) Pathno value

                  Loaded Configuration FileC:\Program Files\PHP8\php.ini

                  par contre en ce qui concerne le pb de mysqli le mystère reste entier.

                  Papita47

                  0