mongodb-php

Using MongoDB with PHP on Debian Wheezy doesn’t work out of the box. Here’s how I got it working:

First, install a whole lot of packages and then build the mongo driver: (we remove the unused packages later)

$ sudo apt-get install php5-dev php5-cli php-pear make
$ sudo pecl install mongo

As soon as this is completed, add the driver to PHP. According to your installation, you want to add it to /etc/php5/fpm/php.ini, if using PHP-FPM, or /etc/php5/apache2/php.ini if using apache2 and so on. However, add this line to the config file:

extension=mongo.so

And then, restart the affected services, for PHP-FPM do this:

$ sudo service php5-fpm restart

And for pure Apache, do this:

$ sudo service apache2 restart

If this is on a production server, I recommend to remove all the unnecessary software, especially the compilers:

$ sudo apt-get purge autoconf autotools-dev automake binutils cpp gcc libc-dev-bin linux-libc-dev libc6-dev zlib1g-dev libltdl-dev libssl-dev libssl-doc manpages-dev php5-dev binutils libtool gcc-4.7 cpp-4.7

Then start MongoDB, e.g. like so:

mongod --dbpath /data/test

And for testing, here’s some PHP code from the PHP.net MongoDB tutorial:

<?php
// connect
$m = new MongoClient();
// select a database
$db = $m->comedy;
// select a collection (analogous to a relational database's table)
$collection = $db->cartoons;
// add a record
$document = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" );
$collection->insert($document);
// add another record, with a different "shape"
$document = array( "title" => "XKCD", "online" => true );
$collection->insert($document);
// find everything in the collection
$cursor = $collection->find();
// iterate through the results
foreach ($cursor as $document) {
    echo $document["title"] . "\n";
}
?>

Happy coding!