Hoe op te lossen “Fatale fout: klasse ‘MySQLi’ niet gevonden”?

Ik ben bezig met een tutorial en krijg deze foutmelding:

Fatale fout: klasse ‘MySQLi’ niet gevonden (LANGE URL) op regel 8

De code op regel 8 is:

$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);

Ik zag online dat iemand zei dat hij moest kijken of het was ingeschakeld in mijn phpinfo(), maar er stond daar niets vermeld voor “mysqli”.

Ik gebruik ook PHP-versie 5.2.5


Antwoord 1, autoriteit 100%

Het lijkt erop dat je gewoon MySQLimoet installeren.

Als je denkt dat je dat hebt gedaan en nog steeds een probleem hebt, post dan je besturingssysteem en al het andere dat kan helpen om het verder te diagnosticeren.


Antwoord 2, autoriteit 51%

Je kunt controleren of de mysqli-bibliotheken aanwezig zijn door deze code uit te voeren:

if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
    echo 'We don\'t have mysqli!!!';
} else {
    echo 'Phew we have it!';
}

Antwoord 3, autoriteit 42%

Als je Ubuntugebruikt, voer dan:

sudo apt-get install php-mysqlnd

Antwoord 4, autoriteit 27%

Als u “new mysqli(..)” aanroept vanuit een klasse met een naamruimte, ziet u mogelijk een soortgelijke fout Fatal error: Class 'foo\bar\mysqli' not found in. De manier om dit op te lossen, is door het expliciet in de root-naamruimte in te stellen met een voorafgaande backslash, zoals:

<?php 
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name);

Antwoord 5, autoriteit 16%

Naast het verwijderen van commentaar op de php_mysqli.dllextensie in php.ini, verwijder ook het commentaar op de extension_dirrichtlijn in php.ini en specificeer uw locatie:

extension_dir = "C:\software\php\dist\ext"

Hierdoor werkte het voor mij.


Antwoord 6, autoriteit 5%

Mijn besturingssysteemis Ubuntu. Ik heb dit probleem opgelost met:

sudo apt-get install php5-mysql

Antwoord 7, autoriteit 3%

Als je Docker gebruikt…

Binnen php-container RUN:

#docker-php-ext-install mysqli
#apachectl restart

Antwoord 8, autoriteit 2%

Het lijkt op een probleem met uw installatie.

  • Heb je MySQLi geïnstalleerd?
  • Heb je het geactiveerd in php.ini?
  • Apache en/of PHP-FPM opnieuw gestart?

http://www.php.net/manual/en/mysqli .installatie.php


Antwoord 9, autoriteit 2%

Hoe mysqli in php.ini in te schakelen

  1. Bewerk/verwijder commentaar door ‘;'(dubbele punt) de volgende configuratie in php.ini te verwijderen:
    1e(commentaar verwijderen en configuratie toevoegen):

    include_path = "C:\php\includes"
    

    2e(verwijder commentaar):

    extension_dir = "ext"
    

    3rd (Uncommentment and Edit CONFIG):

    extension=C:/PHP/ext/php_mysql.dll
    extension=C:/PHP/ext/php_mysqli.dll
    
  2. Start de IIS-server opnieuw
  3. Zorg ervoor dat MySQL op het systeem loopt.

Hoe PHP.INI-bestand te laden

  1. Hernoem een ​​van de FILE PHP.INI-productie / PHP.INI-Development tot PHP.INI uit C: \ PHP (Notitie Nu zal de uitbreiding inI I.E “PHP.INI” zijn).
  2. Na het hernoemen naar Php.ini File Restart Server
  3. Zie de wijzigingen in http: //localhost/phpinfo.php

Antwoord 10

Verwijder op een nieuwe installatie van PHP ;vóór extension_dirin php.ini.


Antwoord 11

Voor iedereen die Docker gebruikt, rende ik dit probleem tegen en leende het op door mijn eigen Dockerfile te gebruiken in plaats van de PHP: FPM-afbeelding:

FROM php:fpm
RUN docker-php-ext-install mysqli

Antwoord 12

Ik dacht dat ik iemand met hetzelfde probleem kan helpen met behulp van NameSco-servers.
Ik heb geprobeerd dit probleem op te lossen na het verplaatsen van een database van mijn lokale server op Home PC naar Namesco. Ze zouden niet helpen ze zeiden dat het een coderingsprobleem was.

  • Het was echter eenvoudig om te repareren van hun CPANEL Linux-hosting
    interface.
  • Klik op PHP.
  • Klik vervolgens op PHP-modules en op hun lijst met vooraf geïnstalleerde modules klikt u gewoon op het vakje voor MySQLI.
  • Klik vervolgens op Opslaan. (Het is niet nodig om de code te wijzigen als het werkte (en) op een andere server.)

Helaas waren hun steunartikelen verspilling van tijd. Na het lezen ging ik naar de admin-interface met een nieuwe bepaling.


Antwoord 13

Enkele distributies (zoals gentoo ) ondersteuning van meerdere installaties van PHP, en u moet maken zeker dat u er een gebruikt met MySQLI geïnstalleerd en ingeschakeld.

Op Gentoo had ik een nieuwe PHP geïnstalleerd (met de MySQLI-gebruik Vlag ingeschakeld), maar ik moest de nieuwe versie van PHP activeren (omdat de oude Mysqli MySQLI heeft gemist):

# eselect php list apache2
  [1]   php5.3 *
  [2]   php5.5
# eselect php set apache2 2
You have to run `/etc/init.d/apache2 restart' for the changes to take effect
# /etc/init.d/apache2 restart

Antwoord 14

Ik heb het hierboven gecontroleerd en het werkte niet voor mij,

Er zijn enkele stappen die ik vond.

Ik gebruikte PHP-versie 5.5.9-1ubuntu4.17 op ubuntu 14.04

Controleer eerst de map

#ls /etc/php5/mods-available/
json.ini  mcrypt.ini  mysqli.ini  mysql.ini  mysqlnd.ini  opcache.ini  pdo.ini  pdo_mysql.ini  readline.ini  xcache.ini

Als het niet mysqli.ini , lees dan een ander antwoord voor het installeren ervan,

Open php.iniVind Extension_Dir

In mijn geval moet ik extension_dir = /usr/lib/php5/20121212

instellen

en herstart apache2: /ect/init.d/apache2 restart


Antwoord 15

De PHP-ritssluiting bevat de meeste van de veelgebruikte extensies (* .dll in Windows zoals PHP_MYSQLI.DLL) onder de \ EXT-map, maar ze zijn niet standaard ingeschakeld. Misschien krijg je deze fatale fout bij het proberen om MySQLI te gebruiken:

( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24

Open Php.ini openen, openen Php.ini (u moet misschien eerst PHP.INI-Development als PHP.INI kopen) en VN-opmerking (of toevoegen) Deze twee regels:

extension_dir = "ext"

En eventuele specifieke extensies waarvoor u fatale fouten krijgt, d.w.z. voor MySQLI:

extension=mysqli

Antwoord 16

op ubuntu:

sudo apt-get install php-mysql
sudo service apache2 restart

Antwoord 17

op debian 10

apt install php-mysql
/etc/init.d/apache2 restart

Antwoord 18

Ik heb een oplossing voor dit probleem gevonden na een lange analyseprocedure.
Na het goed testen van mijn PHP-installatie met de opdrachtregelkenmerken kwam ik erachter dat het PHP goed werkt en kan werken met de MySQL-database. Btw. U kunt code-bestanden uitvoeren met PHP-code met de opdracht PHP -F FileName.php
Dus besefte ik, het moet iets mis zijn met de apache.
Ik heb een bestand gemaakt met alleen de Phpinfo () -functie binnen.
Hier zag ik, dat in de lijn
Geladen Configuratiebestand
Mijn configuratie-bestand was niet geladen, in plaats daarvan werd genoemd (geen).

Eindelijk vond ik in de Apache-configuratie het item

<IfModule php5_module>
    PHPINIDir "C:/xampp/php"
</IfModule>

Maar ik heb de PHP 7 geïnstalleerd en dus kon de Apache het Php.ini-bestand niet laden omdat er geen toegang voor was.
Ik heb

toegevoegd

<IfModule php7_module>
    PHPINIDir "C:/xampp/php"
</IfModule>

En na herstart Apache werkt alle goed.

Deze codeblokken hierboven heb ik gevonden in mijn HTTPD-XAMPP.CONF-bestand. Moge het ergens anders in uw configuratie zijn.
In hetzelfde bestand was ik gewijzigd vóór de instellingen voor de PHP 7 als vervanging voor de PHP 5-versie.

#
# PHP-Module setup
#
#LoadFile "C:/xampp/php/php5ts.dll"
#LoadModule php5_module "C:/xampp/php/php5apache2_4.dll"
LoadFile "C:/xampp/php/php7ts.dll"
LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"

Zoals u kunt zien, heb ik het XAMPP-pakket geïnstalleerd, maar dit probleem was net aan de Apache-kant.


Antwoord 19

installeren
PHPXX-extensie door PHP.
In de zaak van mijn FreeBSD:

pkg install php74-extensions

Antwoord 20

Ik gebruik XAMPP en mijn probleem was opgelost zodra ik hernoem:

extension_dir = "ext"

Naar

extension_dir = "C:\xampp\php\ext"

PS: Vergeet niet om Apache opnieuw op te starten na het maken van deze wijziging!


Antwoord 21

in php.ini:

extension_dir ="c:/wamp64/bin/php/php7.4.9/ext/"

Controleer of de PHP-versie correct is.


Antwoord 22

  1. Open uw PHP-map.
  2. Zoek php.ini-ontwikkeling en open het.
  3. Vind ;extension=mysqli
  4. verwijder het ;symbool
  5. bestand opslaan en de bestandsextensie wijzigen van php.ini-development in php.ini
  6. Herstart de server en test de code:
   if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {  
            echo 'We don\'t have mysqli!!!';  
     } else {  
         echo 'mysqli is installed';
     }
  1. als het niet werkt, verander dan beide extension_dir in php.ini van “ext” in “c:\php\ext”
    en extension=mysqli naar extension=php_mysqli.dll en dan opnieuw testen
    Vergeet niet om de server elke keer dat u test te resetten

Antwoord 23

Het enige wat je hoeft te doen is naar het bestand php.inite gaan en op regel 926 (afhankelijk van de versie) # te verwijderen. Het zou er zo uit moeten zien:

;extension=ldap
;extension=mbstring
;extension=exif
extension=mysqli
;extension=oci8_12c
;extension=odbc

Sla het bestand op en open console (cmd) als beheerder. Ga naar het pad Apache24 / binen voer httpd -k restartin. Met deze opdracht wordt uw server opnieuw opgestart. Ververs daarna de pagina en alles zou moeten werken.


Antwoord 24

Toen ik mijn PHP-webapp probeerde, kreeg ik dezelfde foutmelding.

Door te googlen kwam ik erachter dat de MySQL-plug-in voor de PHP-server ontbrak bij mijn installatie. Ik gebruik Ubuntu, dus toen ik de MySQL-plug-in voor PHP probeerde, ontdekte ik dat er 2 zijn,

php-mysqlen php<version>-mysql

Ik gaf opdracht – php --versionin mijn terminal, ik had php7.4,

opnieuw heb ik apt install php7.4-mysql

uitgegeven

Het werkte.


Antwoord 25

<?php  /* If the error is due to calling mysqli in a class */
    class dbconnect extends mysqli{
        private $host = 'localhost';
        private $user = 'root';
        private $pass = '';
        private $db = 'test';
        public function __construct() {
            parent::__construct($this->host, $this->user, $this->pass, $this->db);
            if (mysqli_connect_error()) {
                die('Connect Error (' . mysqli_connect_errno() . ') ' .
                    mysqli_connect_error());
            }
        }
    }
?>

Other episodes