Blackfire Setup with MAMP Pro

Blackfire Setup with MAMP Pro

Blackfire is kind of a profiler for pro users and MAMP Pro is used mostly for starters. But that doesn't mean that you're not a pro when using MAMP or that Blackfire is only useful for "professionals". It only means that there are not much resources online about how to setup Blackfire there.

In general the Blackfire documentation is quite good and also includes a description how to do a manual installation. Unfortunately it misses one part which through me off at the beginning.

First of all, check if you've configured your MAMP to use a separate php.ini (one for Apache and one for the console). This is important if you also want to run blackfire on the console. I have php symlinked to use the MAMP version in iTerm and the specific php.ini in my profile.

alias php="/Applications/MAMP/bin/php/php7.3.8/bin/php -c /Applications/MAMP/bin/php/php7.3.8/conf/php.ini"

In the documentation you find the probe, but you won't find the blackfire.so file. The best way to download that is to use homebrew with the following command:

brew install blackfire-php73 --without-homebrew-php

Replace php73 with whatever version you're using. This will result in the blackfire.so file to be installed to /usr/local/Cellar/blackfire-php73/1.27.1/ (depending on the version the path will change, but you get the gist). Change into the director and copy the blackfire.so to your extension directory with:

cp blackfire.so /Applications/MAMP/bin/php/php7.3.8/lib/php/extensions/no-debug-non-zts-20180731/blackfire.so

Now put the following configuration with your api key and secret (the ones you get from Blackfire) at the end of your php.ini. If you use the MAMP templates, add it there.

[blackfire]
;Replace with your extension path (different for every php version)
extension="/Applications/MAMP/bin/php/php7.3.8/lib/php/extensions/no-debug-non-zts-20180731/blackfire.so"

; Socket for Mac
blackfire.agent_socket = unix:///usr/local/var/run/blackfire-agent.sock

blackfire.agent_timeout = 0.25

blackfire.log_level = 4
blackfire.log_file = /tmp/blackfire.log

blackfire.server_id = {your-server-id}
blackfire.server_token = {your-server-token}

Verify that the extension is installed through running

php --ri blackfire

You should be good to go. I recommend to add another alias for Blackfire to use the full php path including configuration so that you don't have to run it the following way:

blackfire run /Applications/MAMP/bin/php/php7.3.8/bin/php -c /Applications/MAMP/bin/php/php7.3.8/conf/php.ini bin/console app:your-command