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 https://github.com/jokkedk/webgrind

More info at https://github.com/jokkedk/webgrind/wiki/Installation

Webgrind call graph
Webgrind call graph
Advertisements

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:

[xdebug]
xdebug.profiler_enable_trigger=1
xdebug.profiler_enable=0

Resources
https://stackoverflow.com/questions/8077993/can-i-manually-say-on-xdebug-profiler-to-start-profiling-in-specific-place
https://xdebug.org/docs/all_settings#profiler_enable_trigger

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/xdebug.so /usr/lib/php/modules
  8. Edit /etc/php/php.ini and add the line
    zend_extension = /usr/lib/php/modules/xdebug.so
  9. sudo systemctl restart httpd.service

Oh yeah
Xdebug 2.4