5

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

littleK
  • 19,521
  • 30
  • 128
  • 188

1 Answers1

4

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(...);
Alex Howansky
  • 50,515
  • 8
  • 78
  • 98