Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mysqli not found in (php-fpm) docker container

Tags:

I'm running php:7-fpm in a docker container that is used by my nginx web server. Everything is working nicely except for when I'm trying to instantiate a mysqli connection in my PHP code. I receive the following error:

"NOTICE: PHP message: PHP Fatal error:  Uncaught Error: Class 'Listener\mysqli' not found in index.php:104

Here's my Dockerfile for building the image, where I explicitly install the mysqli extension:

FROM php:7-fpm

RUN docker-php-ext-install mysqli

It appears to be installed given the phpinfo() output below. Do I need to configure or enable it somehow?

enter image description here

like image 203
littleK Avatar asked May 05 '17 16:05

littleK


1 Answers

Your problem isn't that you're missing the mysqli extension.

If you're doing something like this:

namespace Listener;

class Foo
{
    public function bar() {
        $conn = new mysqli(...);
    }
}

Then PHP will interpret new mysqli() as new \Listener\mysqli() because you're currently in the \Listener namespace. To fix this, you can just explicitly anchor mysqli() to the root namespace:

$conn = new \mysqli(...);
like image 125
Alex Howansky Avatar answered Sep 22 '22 10:09

Alex Howansky