PHP profiling/debugging with Xdebug and Webgrind

  1. Install Xdebug
  2. cd /var/www/ (where your web servers document root is set)
  3. git clone

More info at

Webgrind call graph
Webgrind call graph

On demand Xdebug

Xdebug with default_enable=1 makes PHP execution kinda slow. Fortunately it offers on demand profiling when XDEBUG_PROFILE parameter is part of the request.
Make sure you have the following in your php.ini under [xdebug] section:



Compiling Xdebug for PHP

While I’m not sticking to Arch Linux’s PHP (it’s version 7 by default a long time) so I had to compile Xdebug for my PHP version. Great thing at xdebug’s site is that they provide a wizard which parses the pasted php.ini and outputs an install instruction list 🙂

For me the following worked like charm:

  1. Download xdebug-2.4.0.tgz
  2. Unpack the downloaded file with tar -xvzf xdebug-2.4.0.tgz
  3. Run: cd xdebug-2.4.0
  4. Run: phpize (See the FAQ if you don’t have phpize).As part of its output it should show:
    Configuring for:
    PHP Api Version:         20131106
    Zend Module Api No:      20131226
    Zend Extension Api No:   220131226

    If it does not, you are using the wrong phpize. Please follow
    this FAQ entry and skip the next step.

  5. Run: ./configure
  6. Run: make
  7. Run: cp modules/ /usr/lib/php/modules
  8. Edit /etc/php/php.ini and add the line
    zend_extension = /usr/lib/php/modules/
  9. sudo systemctl restart httpd.service

Oh yeah
Xdebug 2.4