MySQLi not found dockerized php

Tom picture Tom · Oct 22, 2017 · Viewed 23.3k times · Source

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?

Answer

Robert picture Robert · Oct 23, 2017

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.