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:
How can I get this running? Or should I be using a different driver now?
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
.
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>
works for me:
inside php container:
docker-php-ext-install mysqli
apachectl restart
https://github.com/docker-library/php/issues/391
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With