How to install Xdebug and Webgrind on Mac OS X – [everything from terminal]

Recently, I have been asked to help install and setup XDebug along with Webgrind in a Mac OS X system using SSH on one of my colleague’s system. All of this setup were done remotely from another system. Here are the steps/commands for achieving the same.

Steps for installing Xdebug:

xdebug-profiling

  1. Get the information about installed PHP on the system. This is needed to get the custom installation instructions from xdebug website here: http://xdebug.org/wizard.php
    clear
    php -i
    

    Copy the whole output of the above command and paste it in the textarea provided here: http://xdebug.org/wizard.php

  2. Get the url for the latest xdebug script and download it to your mac.
    sudo cd /tmp/ && curl http://xdebug.org/files/xdebug-2.2.5.tgz > xdebug.tgz
    tar -xvzf xdebug.tgz 
    cd xdebug-2.2.5/
    
  3. Compile and build the php extension from the source. Install the same.
    phpize
    ./configure
    make
    sudo make install
    
  4. Enable Xdebug in the php.ini file.
    1. Find the complete path of the xdebug.so file prior to editing the php.ini file. The path looks something like this: /usr/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so Can be located using the command:
      locate xdebug.so
    2. Edit the php.ini file and add the following lines to the extreme end.
      cd /etc/
      sudo nano php.ini
      

      Lines to be added:

      [xdebug]
      zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
      xdebug.file_link_format="txmt://open?url=file://%f&line=%1"
      xdebug.remote_enable = On
      xdebug.remote_autostart = 1
      
    3. Restart Apache.
      sudo apachectl restart
      

Setup Webgrind:

  1. Download and put Webgrind source into a folder in webserver. ( /Users/subharanjanm/Sites/webgrind/ in my case )
    cd /Users/subharanjanm/Sites/
    sudo git clone https://github.com/jokkedk/webgrind.git
    cd webgrind/
    
  2. Create a folder inside /private/var/tmp/ to store and read profiler files by Xdebug and Webgrind. This step can be skipped if you want to use the “tmp” directory directly to write files.
    sudo mkdir /private/var/tmp/xdebugprofilers/
    sudo chmod 777 /private/var/tmp/xdebugprofilers/
    
  3. Make changes needed in the Webgrind config file.
    sudo nano config.php 
    

    Change the values of these two variables as per the path.

    static $storageDir = '/private/var/tmp/xdebugprofilers/';
    static $profilerDir = '/tmp/xdebugprofilers/';
    
  4. Finally add following lines into php.ini below the xdebug settings to enable profiler and its related paths.
    sudo nano /etc/php.ini
    
    xdebug.profiler_enable = 0 
    xdebug.profiler_enable_trigger=1
    xdebug.profiler_output_dir = "/private/var/tmp/xdebugprofilers/"
    xdebug.profiler_output_name = cachegrind.out.%t.%p
    
  5. sudo apachectl restart
    

Now you can append ?XDEBUG_PROFILE=1 into the url of your php script to see the profiling data on Webgrind interface.

webgrind_xdebug


Posted

in

,

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *