Very excited to present my own Setup Guide to get Xdebug, PhpStorm and MAMP to play nice together. Our goal here is to get remote debugging setup to be able to debug any line within a much bigger web app. In our case I am interested to debug WordPress Themes and Plugins without having to declare what file to start from.
- Direct (via command line)
- Remote (via browser)
I am no expert on this topic, so apologize my language. If anybody knows the proper terminology, please leave them in the comments and I am more than happy to change this. Essentially you can find two types of debugging. Direct one and remote. The first one essentially is essentially like running php from your command line using Xdebug. So you need to know exactly where to start and all files you want to debug need to be somehow connected (told you I am no expert on this…). The second method is the remote debugging where anywhere in you code you set a break point and essentially trigger the debugging remotely, in our case a browser. This is what we want 🙂
Here is how those two options look like in PhpStorm:
There are plenty of steps to do in order to get this to work. Here is the step by step list.
Note I will be doing most work from the terminal. You should be able to copy paste all commands.
Here is my setup for this Setup Guide
- MAMP 2.2
- PhpStorm 8.0.1
- OSX 10.7
Either create or open your .bash_profile file in ~/.bash_profile
open ~/.bash_profile or if your .bash_proile doesn’t exist
touch ~/.bash_profile; open ~/.bash_profile
enter the following at the bottom of your .bash_profile:
1 2 3 # MAMP PHP export MAMP_PHP=/Applications/MAMP/bin/php/php5.5.3/bin export PATH="$MAMP_PHP:$PATH"
Restart your terminal.
Check your php version with:
Your php ini file will be in:
If you setup you MAMP PHP globally you can also do:
php -r 'phpinfo();' | grep 'php.ini'
and find your php.ini path. Couldn’t help myself but geek out. Sorry…
Open your php.ini file.
Find the section Xdebug and uncomment (aka remove the semicolon) the zend_extension and add the following two options until your section looks like this:
1 2 3 4 [xdebug] zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so" xdebug.default_enable=1 xdebug.remote_enable=1
Your Xdebug section should be at bottom of your php.ini file.
Make sure you restart your MAMP server after editing your php.ini file, otherwise your settings wont apply.
The title says it all:
In your Xdebug Helper browser extension go to Options via chrome://extensions/. The Xdebug Helper should be at the bottom. Set the IDE key to PhpStorm.
Setup the project with PhpStorm. Make sure you set the correct project root and setup the localhost with the correct port.
In our case we will open project wp-test.
Turn on via: Go to Run -> Start Listening For PHP Debug Connections
Switch the little to Debug.
Finally… In PhpStorm just click into the line on the left.
PhpStorm should recognize at this point the remote connection and ask you what you want to debug. Set your choice on your project root folder.
Check the debugger for the mapping error and untick the mapping. You can now run the debugger and it will stop at your breaking point.
Phew we are all set. If all is working for you, you should now be ready to use Xdebug, PhpStorm and MAMP. If you have any questions I will do my best to help. Please consider though that I have very little experience in this.