MAMP with XHProf
3 minutes to readMAMP doesn't come with XHProf support by default and sometimes we need more than just a simple debug tool with Xdebug.
Just for the record, I'm posting this in the current version of MAMP, that is 2.1.1 and in the Mountain Lion OSX 10.8.1 version. I'm not sure if it works the same way on other versions, but you can leave a comment about it 🙂
So, how can we enable it and make it work?
Requirements
First of all you'll need Xcode and Command Line Tools. Download and install them.
Then you'll need the php 5.4.4 source files used on the options available (we are aiming for php 5.4.4!). You can download them on php.net website.
Unzip it to the /Applications/MAMP/bin/php/php5.4.4/include/php/
folder (create the folders if they don't exist).
Now grab a XHProf from GitHub or pecl and extract it. Move the files to where you want to use it. I normally set it to be aside the php folder extracted above so I can have several XHProf instances for each PHP version I use:
mv ~/Downloads/xhprof-0.9.2/xhprof-0.9.2 /Applications/MAMP/bin/php/php5.4.4/include/xhprof
Let's get ready for build 🙂
Building our xhprof.so
Now we are ready to start compiling the php module. Go to the /Applications/MAMP/bin/php/php5.4.4/include/php/
folder created previously on the terminal and run:
./configure
Now go to your XHProf folder and run:
cd extension/
phpize
./configure
make
make install
This should get you the module on the right path of the MAMP library on /Applications/MAMP/bin/php/php5.4.4/lib/php/extensions/no-debug-non-zts-20090626/
. You only need to enable the module on your php.ini
file.
Check where is your php.ini by typing:
php -i | grep php.ini
Edit it and append at the end the following settings:
[xhprof]
extension=xhprof.so
After restarting your Apache on MAMP, confirm that you can see the xhprof
group information with CPU count and version (in my case 0.9.2) on your phpinfo
.
Configure your XHProf
You can now read the rest of the information that the pecl package brings on how to use it and configure the ouput folder. I normaly set mine to /tmp/
because it's cleared more regulary (see /etc/defaults/periodic.conf
).
[xhprof]
extension=xhprof.so
xhprof.output_dir="/tmp/xhprof"
Make sure that the output directory you set exists:
mkdir -p /tmp/xhprof
Testing your XHProf settings
You can now use the examples/sample.php
file that comes with the pecl package.
cd examples
php sample.php
This will output the file into your xhprof.output_dir
settings defined on the php.ini
file.
You can now use several tools to check the output like:
For the purposes of this post, lets use the one that comes with xhprof pecl package. Start by making a symbolic link to your default html pages (I use ~/Sites
, you might use the default htdocs on MAMP):
ln -s /Applications/MAMP/bin/php/php5.4.4/include/xhprof/xhprof_html/ ~/Sites/xhprof
No open the url of xhprof_html
with the run especified by the output file. In my case I ran:
open http://localhost/xhprof/index.php?run=50b3c637482b1&source=xhprof_foo
Because my file was 50b3c637482b1.xhprof_foo
.
Feel free to test this output with XHGui or XHProf.io also.
I think I didn't forget anything, but please feel free to comment if I missed any step.