Drupal 6 and Memcached on MAMP 2.0

Posted on June 3, 2012, 4:05 p.m.

Setting up Drupal 6 to use memcached is anything but trivial. There are plenty of instructions out there, but many of these are for MAMP 1.x, or involve MacPorts. This post will show you how to quickly set up memcached locally. Best of all, this guide will leave your system ready to install other PECL extensions quickly.

You will need XCode and MAMP 2.0 installed for any of this to work. Also, it assumes you're using PHP 5.2 through MAMP's settings, but it probably works with 5.3 too. Onward.

Learning Drupal? Subscribe to my Drupal articles, tips and tutorials.

First and foremost, you should set up Homebrew. It's dramatically better than MacPorts. To install it - if you haven't already done so - just run:

1
2
/usr/bin/ruby -e "$(/usr/bin/curl -fsSL \
https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"

Once that's done, we're ready to install memcached and libevent. Do that with:

1
2
3
4
5
brew install libevent
brew install autoconf
brew install libmemcached
# Don't worry about adding memcached to your LaunchAgents folder.
# We're going to run it manually.

And that's it for the easy part. Kudos to homebrew for making this very straightforward. Now for the interesting part.

To install a PECL extension using MAMP, you need to grab the PHP source. Go ahead and do this now by going to http://us.php.net/distributions/php-5.2.17.tar.bz2, changing 5.2.17 to whatever version of PHP 5.2 your MAMP installation has. To find this out, run find /Applications/MAMP/bin/php -name 'php5.2*' and make note of the last directory.

Once you've got the source, you'll need to extract it in /Applications/MAMP/bin/php/php5.2.17 under a folder structure with the path include/php. Confusing? These lines will do it for you.

1
2
3
4
5
cd /Applications/MAMP/bin/php/php5.2.17
mkdir include
cd include
curl http://museum.php.net/php5/php-5.2.17.tar.bz2 | tar -xz
mv * php

Now we've need to run ./configure on the PHP source, and remove pear.conf from the MAMP distribution - it comes corrupted out of the box, for some reason.

1
2
3
4
 cd php
./configure
cd ../../
rm conf/pear.conf

And finally, we're ready to install the memcached PECL extension and add it to php.ini so it's enabled. Like so:

1
2
3
4
5
cd bin
./pecl install memcached
cd ../
echo -e "\n[memcached]\nextension=memcached.so" >> conf/php.ini
cd ../../

And that's it. This leaves you at the root of MAMP's installation. You should restart MAMP and enjoy fast caching. Don't forget to start memcached by running:

1
memcached -vv

This will start an instance that prints activity to the screen. Very useful when debugging locally, and very easy to restart. This completes the tutorial.

If you ever need to install another PECL extension, your MAMP installation now has all the necessary tools to do so. Just use the PECL binary in /Applications/MAMP/bin/php/php5.2.17/bin and you should be good to go.

Below is the entire set of commands, for posterity.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/usr/bin/ruby -e "$(/usr/bin/curl -fsSL \
https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"

brew install libevent
brew install autoconf
brew install libmemcached
# Don't worry about adding memcached to your LaunchAgents folder.
# We're going to run it manually.

cd /Applications/MAMP/bin/php/php5.2.17
mkdir include
cd include
curl http://museum.php.net/php5/php-5.2.17.tar.bz2 | tar -xz
mv * php
cd php
./configure
cd ../../
rm conf/pear.conf
cd bin
./pecl install memcached
cd ../
echo -e "\n[memcached]\nextension=memcached.so" >> conf/php.ini
cd ../../