Danaq
Danaq

Reputation: 673

setup mongoDB-extension for php7

I'm trying to install the mongoDB-extension for php7. I started with a brand new installation of Ubuntu-Server 16.04.1. Pre-installed (while OS-installation) packages were LAMP-extension, OpenSSL and MySQL-server. This was installed on a local VirtualBox. It shall to be a development system which is configured equal for every developer.

First I installed MongoDB itself according to these instructions: install mongoDB on Ubuntu

After that, according to this second instruction: installing php7-mongoDB-client-driver,

I installed

It can be recapped in

$sudo apt-get install php-pear phpize

because these two packages were flagged as missing when using

sudo pecl install mongodb

the first time.

Then I was suggested to install openssl-extension. About that I found an instruction which told me to execute these 3 commands:

(the first package was already installed on my system)

after that

$php -m

should show "openssl" as a single point on the list.

Then I could finally execute

$sudo pecl install mongodb

This installation displayed four instructions at the end:

<Installing '/usr/lib/php/20151012/mongodb.so'>
<install ok: channel://pecl.php.net/mongodb-1.1.8>
<configuration option "php_ini" is not set to php.ini location>
<You should add "extension=mongodb.so" to php.ini>

So I executed:

$php -i | grep extension_dir

which should show up the same path as displayed in the first line.

$pear config-set php_ini /etc/php5/apache2/php.ini
$pecl config-set php_ini /etc/php5/apache2/php.ini

to follow the instructions of the third line.

Added extension=mongodb.so to phpini at /etc/php/7.0/apache2/ to conform to line four.

And finally, after restarted apache2,

$php -i

should display the same version of mongodb similar in the second line.

After all of these steps I found one last package to install which is

$sudo apt-get install php-mongodb

But also this this didn't help.

To check if the extension is working I used either:

$m = new MongoClient();  OR

$m = new Mongo\Driver\Manager();

and then echo $m. I read that Mongo\Driver\Manager is the new version but even with this code it doesn't work. It always tells me that the class "could not be found". Irrespective of the class I tried.

I hope this (hopefully) complete instruction can help someone with a similar problem about mongodb and php.

Additionally I hope that these information can help you to give me a hint what else I can do to fix that problem. Unfortunately I searched a long time but didn't found something to include this extension into this php-version. There where only part but I cant build them together.

Upvotes: 10

Views: 33418

Answers (2)

Amin Shojaei
Amin Shojaei

Reputation: 6518

For docker, I just added below line to the Dockerfile:

RUN pecl install mongodb && docker-php-ext-enable mongodb

or

pecl install mongodb-1.5.0

docker-php-ext-enable mongodb

Upvotes: 1

Strahinja90bg
Strahinja90bg

Reputation: 161

When using PHP 7+ install new Mongo PHP Adapter

 composer config "platform.ext-mongo" "1.6.16" && composer require alcaeus/mongo-php-adapter

Then install mongodb with PECL

pecl install mongodb

And if you installed correctly the mongodb

$ sudo nano /etc/php/7.0/apache2/php.ini

Add the following line in the file:

extension = mongodb.so;

or with this command

echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

Upvotes: 4

Related Questions