Fatal Error: Class mysqli not fount Fatal Error: Class mysqli not fount
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Fatal Error: Class mysqli not fount

Started by thebackup, February 01, 2021, 06:38:21 AM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

thebackup

Hello! I've recently upgraded my Coppermine gallery from 1.5.46 to 1.6.10, with PHP 5.4.
I've followed the upgrading instructions carefully as outlined in here: https://coppermine-gallery.net/docs/curr/en/upgrading.htm

Ran the update.php script, and no problem. Able to log in and everything seems to look good. However, when I switch to PHP 7.4, I'm getting errors, specifically it says something like:

Fatal error: Uncaught Error: Class 'mysqli' not found in /home3/******/public_html/gallery/include/database/mysqli/dbase.inc.php:31

So I went into config.inc.php I changed 'dbtype' from 'mysqli' to 'mysql'. Still getting errors. Reverted it back to 'mysqli', restored the database to just before the update, and ran "update.php". Now I get this error message:

Fatal error: Uncaught Error: Class 'mysqli' not found in /home3/******/public_html/gallery/include/database/mysqli/dbase.inc.php:31 Stack trace: #0 /home3/******/public_html/gallery/include/init.inc.php(168): CPG_Dbase->__construct(Array) #1 /home3/******/public_html/gallery/update.php(23): include_once('/home3/******/p...') #2 {main} thrown in /home3/******/public_html/gallery/include/database/mysqli/dbase.inc.php on line 31

I can't really switch back to PHP 5.4 as my hosting removed it from a list of options. Any ideas as to what am I doing wrong?

thebackup

I'd like to add that I contacted support for my hosting, and they reverted it back to PHP 5.4 and now it somehow works again.

I've done some googling and apparently the "class mysqli not found" error means the mysqli module isn't installed, but support told me it is already there for all versions of PHP. They also said that my site's code isn't compatible with PHP 7 - I'm really baffled by this part, as stated in above post I've upgraded to 1.6.10 with release notes saying "updated for compliance with PHP 8.01"

I'd like to leave it at PHP 5.4 but I was told that they will remove that version from the server within several months, meaning it'll default to PHP 7.4 and a broken gallery.

ron4mac

If you are getting that error message with PHP 7.4 then your hosting provider has not properly setup mysql with PHP 7.4.  The fault is theirs and they should correct it.

Just as a troubleshooting method, you could also try changing the 'dbtype' to 'pdo' in the Coppermine config to see what that does.

thebackup

So, I did some digging and I found this in my .htaccess file:
#AddHandler application/x-httpd-php54 .php
<IfModule mod_suphp.c>
    suPHP_ConfigPath /opt/php54/lib
</IfModule>

# php -- BEGIN cPanel-generated handler, do not edit
# Set the "ea-php74" package as the default "PHP" programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php74 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit


I commented out the PHP 5.4 stuff and now I get this (dbtype "mysqli"):
Coppermine critical error:
Unable to connect to database !

MySQLi said: :


Changing it to "pdo" gives me this:
Fatal error: Uncaught Error: Call to a member function errorInfo() on null in /home3/******/public_html/gallery/include/database/pdo/dbase.inc.php:71 Stack trace: #0 /home3/******/public_html/gallery/include/init.inc.php(171): CPG_Dbase->getError() #1 /home3/******/public_html/gallery/index.php(22): require('/home3/******/p...') #2 {main} thrown in /home3/******/public_html/gallery/include/database/pdo/dbase.inc.php on line 71

And somehow commenting out the PHP 7.4 in .htaccess and uncommenting PHP 5.4 will make it work again (mysqli, pdo gives errors).

thebackup

Alright, I solved my issue, finally got my gallery to work with PHP 7.4! Here's what I did:

Because the "Coppermine critical error: Unable to connect to database!" message wasn't outputting anything useful, I added this line in "include/init.inc.php" just before it connects to the database (from: https://stackoverflow.com/questions/18457821/how-to-make-mysqli-throw-exceptions-using-mysqli-report-strict):

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

I get a blank page, but I checked "error_log" on my gallery's installation folder, and I found this:

PHP Fatal error:  Uncaught mysqli_sql_exception: The server requested authentication method unknown to the client

Did some googling with that message and I found this: https://stackoverflow.com/questions/1340488/mysql-php-incompatibility
Changed the MySQL database password and set it accordingly in "config.inc.php" and now it works!