Tuesday, February 9, 2016

Installing xDebug on Mac OSX with AMPPS

Hi Dear reader!

You may be wondering why I am writing yet another article about xDebug installation on Mac OSX, but in fact, I am writing this more because of myself as I want to remember the easiest way on how to build and install custom xDebug without additional troubles in short time. (As I am sure I will forget it if not in written form :-p)

Usually when installing xDebug to make it work with AMPPS on Mac OSX, I downloaded Komodo Remote Debugging Package and selected version which fit my PHP version and put xdebug.so in my PHP modules directory.

Everything was just fine during the time, until the moment I started to play with Magento 2. I switched the AMPPS PHP version to 5.6 and installed Komodo xDebug as usual. But when tried to debug in PHPStorm, some weird errors appeared and debugging was practically impossible ....


After several hours of playing with xDebug settings, I came to idea to try to build custom downloaded xDebug from source and finally after succeeded, my debugging error is gone with newest xDebug version installed.

 Here are the steps performed:

1. Navigate to xDebug custom installation instructions
2. Navigate to: http://localhost/cgi-bin/phpinfo.cgi in browser, and select all / copy whole content of web page
3. Paste that content into textarea on xDebug page we just opened and click on "Analyse phpinfo() output"
4. Now when you have all necessary steps described, just follow the steps to build xDebug.

Is that all?
Why writing an article about that?

 Answer is simple: using AMPPS on OSX above steps will just not work as we expected to by default. We need to change several things ion order to make this process possible.

First of all, try to write in terminal:

which php 
If you just have installed AMPPS, I suppose that php command will lead you to /usr/bin/php - which is in fact default php from OSX, but we need to get AMPPS's which is located in /Applications/AMPPS/php/bin/php.

In order to get php from AMPPS it is easiest way to add a line in .bash_profile:

export PATH=/Applications/AMPPS/mysql/bin:/Applications/AMPPS/php/bin:/usr/local/bin$PATH 
After that logout and login again. We should have /Applications/AMPPS/php/bin/php displayed when we write:
which php
command in terminal.

Let's proceed with compiling our xDebug from source now.

Following instructions from xDebug page, unpack downloaded sources and navigate to that folder in terminal.

Next run:

phpize
 If you get any errors using this command, please use google to find how to resolve them before proceed.

After phpize, instructions tells us that we need to run

./configure
Running that will configure xDebug in 64bit version which will not work with our AMPPS after compiled. After copying xdebug.so as instructed, try to run

php -v
If you get an error...

Failed loading /Applications/AMPPS/php-5.6/lib/extensions/ext/xdebug.so:  dlopen(/Applications/AMPPS/php-5.6/lib/extensions/ext/xdebug.so, 9): no suitable image found.  Did find:
 /Applications/AMPPS/php-5.6/lib/extensions/ext/xdebug.so: mach-o, but wrong architecture 
... this article is for you.
We need to compile xDebug to 32 bit architecture in order to make it work.

To be honest I Googled a lot on this and finally found a solution which is working for me: 

phpize
./configure --enable-xdebug CC="gcc -arch i386" CXX="g++ -arch i386"
 make
After module is built, just continue following instructions on official xDebug site on where to copy it and how to configure in php.ini 

And last but not least, I am using following settings in my php.ini:
zend_extension = /Applications/AMPPS/php-5.6/lib/extensions/ext/xdebug.so

xdebug.remote_host = 127.0.0.1
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.remote_autostart=1
xdebug.idekey=PHPSTORM
xdebug.remote_log="/tmp/xdebug.log"
xdebug.max_nesting_level=1000
xdebug.var_display_max_data=-1
xdebug.var_display_max_depth=-1
xdebug.auto_trace=1
 I hope that this article will help a little bit to save some time on investigating yourselves.

 Cheers :-)

, ,

6 comments:

  1. Excellent solution which saved me quite a lot of time!

    Thank you!

    ReplyDelete
  2. Thanks Darko, I was almost giving up of making xdebug works with AMPPS. Your post helped me a lot.

    ReplyDelete
  3. This is great, I seem to finally set up xdebug correctly with ampps. Do you think you could do a tutorial on setting up php storm with ampps and xdebug? During debugging the ampps server seems to lock up when going to a new page, the only way to fix it is to close php storm and then restart the server, therefore I am left to only use it when I have a big wall when developing.

    ReplyDelete
  4. Worked great on MacOS X El Capitan 10.11 with Acquia Dev Desktop and phpStorm. Thanks!

    ReplyDelete