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.
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
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
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