Easiest way to install Mongodb PHP extension in Ub

2020-05-18 23:05发布

问题:

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.

回答1:

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


回答2:

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


回答3:

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

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



回答4:

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