How to solve "Fatal error: Class 'MySQLi' not found"?
PhpMysqliPhp Problem Overview
I am doing a tutorial and am getting this error:
> Fatal error: Class 'MySQLi' not found (LONG URL) on line 8
The code on line 8 is:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);
I saw online someone said to see if it was turned on in my phpinfo(), but there wasn't anything listed in there under for "mysqli".
Also, I am running PHP version 5.2.5
Php Solutions
Solution 1 - Php
Sounds like you just need to install MySQLi.
If you think you've done that and still have a problem, please post your operating system and anything else that might help diagnose it further.
Solution 2 - Php
You can check if the mysqli libraries are present by executing this code:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
Solution 3 - Php
If you are on Ubuntu, run:
sudo apt-get install php-mysqlnd
And don't forget to restart the php service after this (Apache or php-fpm depends on the setup).
Solution 4 - Php
If you're calling "new mysqli(..)" from within a class that is namespaced, you might see a similar error Fatal error: Class 'foo\bar\mysqli' not found in
. The way to fix this is to explicitly set it to the root namespace with a preceding backslash like so:
<?php
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name);
Solution 5 - Php
In addition to uncommenting the php_mysqli.dll extension in php.ini, also uncomment the extension_dir directive in php.ini and specify your location:
extension_dir = "C:\software\php\dist\ext"
This made it work for me.
Solution 6 - Php
Solution 7 - Php
If you are on Docker...
Inside php-container RUN:
#docker-php-ext-install mysqli
#apachectl restart
Solution 8 - Php
How to Enable mysqli in php.ini
- Edit/uncomment by removing ';'(colon) the following config in php.ini:
1st (uncomment and add config):
2nd (uncomment):include_path = "C:\php\includes"
3rd (uncomment and edit config):extension_dir = "ext"
extension=C:/PHP/ext/php_mysql.dll extension=C:/PHP/ext/php_mysqli.dll
- Restart the IIS server
- Make sure that mysql is running on the system.
How to load php.ini file
- Rename any one of the file php.ini-production/php.ini-development to php.ini from C:\PHP(note now the extention will be ini i.e "php.ini").
- After renaming to php.ini file restart server
- See the changes in http://localhost/phpinfo.php
Solution 9 - Php
Seems like problem with your installation.
- Have you installed MySQLi?
- Have you activated it in php.ini?
- Restarted Apache and/or PHP-FPM?
Solution 10 - Php
I thought I might help anybody with the same problem using Namesco servers. I have been trying to fix this problem after moving a database from my local server on home pc to namesco. They would not assist they said it was a coding issue.
- However, it was simple to fix from their CPANEl LINUX hosting interface.
- Click on php.
- then click on php modules and from their list of preinstalled modules just click the box for mysqli.
- Then click save. (No need to change code if it worked(s) on another server.)
Unfortunately, their support articles were a waste of time. After reading this I went to admin interface with a new determination.
Solution 11 - Php
On a fresh install of PHP, remove ;
before extension_dir
in php.ini.
Solution 12 - Php
For anyone using docker, I ran into this issue, and resolved it by using my own Dockerfile instead of the php:fpm image:
FROM php:fpm
RUN docker-php-ext-install mysqli
Solution 13 - Php
- Open your PHP folder.
- Find php.ini-development and open it.
- Find
;extension=mysqli
- delete the
;
symbol - save file and change the file extension from php.ini-development to php.ini
- Restart the server and test the code:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'mysqli is installed';
}
- if it not working, change both extension_dir in php.ini from "ext" to "c:\php\ext" and extension=mysqli to extension=php_mysqli.dll then test again Remember to reset the server every time you test
Solution 14 - Php
Some distributions (such as Gentoo) support multiple installations of PHP, and you have to make sure you're using one with mysqli installed and enabled.
On Gentoo, I had installed a new PHP (with the mysqli USE flag enabled), but I needed to activate the new version of PHP (since the old one must have been missing mysqli):
# 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
Solution 15 - Php
I checked all above and it didn't work for me,
There are some steps I found.
I used PHP Version 5.5.9-1ubuntu4.17 on Ubuntu 14.04
First check the folder
#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
If it did not contain mysqli.ini, read other answer for installing it,
Open php.ini
find extension_dir
In my case , I must set extension_dir = /usr/lib/php5/20121212
And restart apache2 : /ect/init.d/apache2 restart
Solution 16 - Php
The PHP zip includes most of the commonly used extensions (*.dll on windows such as php_mysqli.dll) under the \ext directory, however they are not enabled by default. You might be getting this Fatal Error when trying to use MySQLi:
( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24
To enable extensions, open php.ini (you might need to first copy php.ini-development as php.ini), and un-comment (or add) these two lines:
extension_dir = "ext"
And any particular extensions you are getting Fatal Errors for, i.e. for mysqli:
extension=mysqli
Solution 17 - Php
on ubuntu:
sudo apt-get install php-mysql
sudo service apache2 restart
Solution 18 - Php
I found a solution for this problem after a long analysing procedure.
After properly testing my php installation with the command line features I found out that the php is working well and could work with the mysql database. Btw. you can run code-files with php code with the command php -f filename.php
So I realized, it must something be wrong with the Apache.
I made a file with just the phpinfo() function inside.
Here I saw, that in the line
Loaded Configuration File
my config file was not loaded, instead there was mentioned (none).
Finally I found within the Apache configuration the entry
<IfModule php5_module>
PHPINIDir "C:/xampp/php"
</IfModule>
But I've installed the PHP 7 and so the Apache could not load the php.ini file because there was no entry for that. I added
<IfModule php7_module>
PHPINIDir "C:/xampp/php"
</IfModule>
and after restart Apache all works well.
These code blocks above I found in my httpd-xampp.conf file. May it is somewhere else at your configuration.
In the same file I had changed before the settings for the php 7 as replacement for the php 5 version.
#
# 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"
As you can see I have the xampp package installed but this problem was just on the Apache side.
Solution 19 - Php
on Debian 10
apt install php-mysql
/etc/init.d/apache2 restart
Solution 20 - Php
install phpXX-extension by PHP. In my FreeBSD's case:
pkg install php74-extensions
Solution 21 - Php
I'm using xampp and my problem was fixed once i rename:
extension_dir = "ext"
to
extension_dir = "C:\xampp\php\ext"
PS: Don't forget to restart apache after making this change!
Solution 22 - Php
In php.ini :
extension_dir ="c:/wamp64/bin/php/php7.4.9/ext/"
Make sure the PHP version is correct.
Solution 23 - Php
All you have to do is go to the php.ini
file and on line 926 (depending on version) delete #. It should look like this:
;extension=ldap
;extension=mbstring
;extension=exif
extension=mysqli
;extension=oci8_12c
;extension=odbc
Save the file and open console (cmd) as administrator. Go to the path Apache24 / bin
and enter httpd -k restart
. This command will restart your server. After that, refresh the page and everything should work.
Solution 24 - Php
When I tried my PHP web app it was giving me the same error.
By googling I found out the MySQL plugin for the PHP server was missing with my installation. I am using Ubuntu, so when I tried MySQL plugin for PHP I found out 2 are there,
php-mysql
and php<version>-mysql
I issued command - php --version
in my terminal, I was having php7.4,
again I issued apt install php7.4-mysql
It worked.
Solution 25 - Php
This issue can be also caused by the .htaccess file misconfiguration.