Question

I'm using Ubuntu 13.10 (saucy salamander) and I was hoping that sudo apt-get install php5-mongo would be enough to get the mongodb database driver installed.

No such luck though. I'm using php5-fpm, so firstly I found I also needed to do php5enmod mongo but even with that, I get a error:

include(MongoClient.php): failed to open stream: No such file or directory

Instead, to install I have to do the following (which uses a lot more disk space):

 sudo apt-get install php5-dev make php-pear
 sudo pecl install mongo
 sudo echo "extension=mongo.so" | tee /etc/php5/mods-available/mongo.ini

My question is why isn't sudo apt-get install php5-mongo enough? Is it a problem with the Ubuntu repo? How can I look into the ubuntu repositories and find what version it uses or why MongoClient.php isn't included. I'm using the "ubuntu:saucy" docker image as my base and it includes universe by default I think.

Was it helpful?

Solution

In Ubuntu 14.04, sudo apt-get install php5-mongo results in a fully working mongo PHP extension. So I guess there is just a packaging problem in Ubuntu 13.10 which causes the problem.

Solution: Use Ubuntu 14.04 LTS instead of Ubuntu 13.10.

But, if you have to use Ubuntu 13.10, don't use the php5-mongo Ubuntu package, instead install the mongo extension via pecl:

sudo apt-get install php5-dev make php-pear
sudo pecl install mongo
sudo echo "extension=mongo.so" | sudo tee /etc/php5/mods-available/mongo.ini

OTHER TIPS

The easiest to install the mongoDB driver for php5 in ubuntu is using the command :

sudo apt-get install php5-mongo

Attention, the driver is correctly installed but not loaded yet, so should absolutly restart the server, if using apache should do :

sudo service apache2 restart

There is also a good way to install the mongo DB for PHP. I have ubuntu 14.04LTS.

open synaptic package manager and search "mongo"

select these packages to install.

  • php-horde-mongo
  • php-mongo

synaptic package manager

click apply to install the packages.

Now restart you apache2 using this command.

sudo service apache2 restart

Test the mongo

create the PHP file with name mongo-test.php and paste this code there.

<?php
   // connect to mongodb
   $m = new MongoClient();

   echo "Connection to database successfully";
   // select a database
   $db = $m->mydb;

   echo "Database mydb selected";
?>

test this URL http://localhost/mongo-test.php

This seems to be a packaging problem in Ubuntu.

Did you install PHP5-fpm via apt-get too? It looks like there is a disconnect between how you installed PHP5 and which php.ini file the php5-mongo package is trying to update.

As for the include(MongoClient.php): failed to open stream error; it is because of your autoloader. When you do new MongoClient when the extension is not enabled it hits your autoloaded which tries to include a file called <classname>.php

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top