Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQLi not found dockerized php

I'm trying to dockerize my website. I've got Nginx and PHP up and running and it's working find except I can't connect to a db. When the page is loaded I get the error:

Fatal error: Uncaught Error: Class 'MySQLi' not found in /private/conn.php:8 Stack trace: #0 /public_html/index.php(2): require() #1 {main} thrown in /private/conn.php on line 8

My connection line on line 8 is:

$db = new mysqli("$host", "$user", "$pass", "$db", "$port");

Now this used to work fine on my old set up but since moving to a new one and installing php7.1.5 I can't get it running. Now, I haven't used the mysqlnd so this may be a misunderstanding on my part but the mysqlnd includes the mysqli driver.

Output of phpinfo: config mysqlnd

How can I get this running? Or should I be using a different driver now?

like image 478
Tom Avatar asked Oct 22 '17 21:10

Tom


3 Answers

You need to enable the php extension in your Dockerfile:

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

There is no need to touch php.ini.

like image 188
Robert Avatar answered Oct 18 '22 10:10

Robert


i had similar issue with
php:7-apache image, which by default will not have mysqli installed
you can verify this inside the container

$ docker exec -it <phpcontainerid> bash  

inside the docker container bash terminal

# docker-php-ext-enable mysqli

if mysqli is not installed which you will come to know from the output of above command

# docker-php-ext-install mysqli

then i commited this change so the same image

$ docker commit -p <phpcontainerid> <new or same image name>
like image 38
Abhishek D K Avatar answered Oct 18 '22 11:10

Abhishek D K


works for me:

inside php container:

docker-php-ext-install mysqli

apachectl restart
  • docker images: mysql, php:7.2.30-apache

https://github.com/docker-library/php/issues/391

like image 29
reyqueson Avatar answered Oct 18 '22 10:10

reyqueson