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:


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

    Copy the whole output of the above command and paste it in the textarea provided here:

  2. Get the url for the latest xdebug script and download it to your mac.
    sudo cd /tmp/ && curl > xdebug.tgz
    tar -xvzf xdebug.tgz 
    cd xdebug-2.2.5/
  3. Compile and build the php extension from the source. Install the same.
    sudo make install
  4. Enable Xdebug in the php.ini file.
    1. Find the complete path of the file prior to editing the php.ini file. The path looks something like this: /usr/lib/php/extensions/no-debug-non-zts-20100525/ Can be located using the command:
    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.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
    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_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.







Leave a Reply

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