64 Bit Eclipse: Linux Installation, including PDT, WTP (WST), ATF, and MySQL (SQL Explorer Plugin) I didn’t know tents could do that…
Apr 13
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Xdebug LogoOK, so I have x64 Eclipse successfully installed and running with all the plugins I use for Web Application Development. But what about debugging? Sure, var_dump(), echo, print and so on are all valuable to me when debugging a script, but it’s always good to have more information.

Xdebug is a fantastic PHP extension, which is written by one of the PHP Core Developers, Derick Rethans. The current version is 2.0.3, and I set about installing it on my system, and integrating it into Eclipse PDT today.

Xdebug can be installed in a few different ways - by downloading the binaries from the site, compiling the source, or via PECL:

sudo pecl install xdebug

Some days, I just prefer to download compile the source, as it gives me more of an understanding of what is being installed and where, and this is one of those days:

cd ~/
mkdir xdebug
cd xdebug
wget http://www.xdebug.org/link.php?url=xdebug203
tar -zxvf xdebug-2.0.3.tgz
cd xdebug-2.0.3

The packages phpize and php-config are required to install Xdebug, and can be obtained by installing the relevant PHP development packages:

sudo apt-get install php4-dev

or

sudo apt-get install php5-dev

depending on the PHP version installed. After unzipping the Xdebug source, I ran

phpize

which output:

PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519

I then checked this against the table at http://www.xdebug.org/docs/install#phpize to see if my PHP version (5.2.3) was compatible with Xdebug - it matched up to the table’s 5.2.x PHP version row, so I went ahead and installed:

./configure --enable-xdebug --with-php-config=/usr/bin/php-config
make

which created a file xdebug.so in the modules subdirectory. This file needs to be copied (or moved) to the PHP Extension directory, which on my system is in /usr/lib/php5/20060613/. An easy way to find the PHP extension directory is to run:

locate mysql.so

ok, so I copied the xdebug.so to the extension directory:

sudo cp modules/xdebug.so /usr/lib/php5/20060613/

So far so good. Now PHP needs to be told about the extension, and to load it. This can be done by adding

zend_extension="/usr/lib/php5/20060613/xdebug.so"

to the php.ini file. However, on my Ubuntu system, the PHP extensions are activated by adding an .ini file to the /etc/php5/apache2/conf.d directory, for each extension installed. The .ini file is the extension_name.ini, so I created a file called xdebug.ini:

cd /etc/php5/apache2/conf.d
gksu gedit xdebug.ini

which for now, contains a single line:

zend_extension="/usr/lib/php5/20060613/xdebug.so"

After restarting the Apache server

sudo /etc/init.d/apache2 restart

I created a file called test.php in my Web Root directory, containing a call to the phpinfo() function:

<?php
phpinfo();
?>

and pointed my browser to http://localhost/test.php. Just before the “PHP Credits” section, is a small box containing information on Zend - and now, with a successful Xdebug installation, additional information on Xdebug:

Xdebug information output by phpinfo()

The same information can be found by opening a Terminal and running

php -m

to output the loaded modules, and towards the end of the output, you should see

[Zend Modules]
Xdebug

alternatively, run

php -i | grep Xdebug

and if Xdebug has been installed successfully, you should see

with Xdebug v2.0.3, Copyright (c) 2002-2007, by Derick Rethans

Now, Xdebug needs to be enabled before any scripts can be debugged! So, in the php.ini file (or in my case, the newly created /etc/php5/apache2/conf.d/xdebug.ini file) I added the lines:

xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"

and restarted Apache again:

sudo /etc/init.d/apache2 restart

running

php -i | grep xdebug

in the Terminal, or using the test.php file containing phpinfo() shows that the new settings are being used, and Xdebug is active and running.

Configuring Eclipse PDT:

Setting up Eclipse PDT to use the Xdebug extension is pretty simple. In Eclipse PDT, I opened Window -> Preferences, then clicked on PHP, expanded the tree, and selected Debug. I Chose Xdebug from the pull down menu for the PHP Debugger, the “Default PHP Server” (should already be set to localhost), and then created a new PHP Executable option by clicking on the PHP Executables link next to the PHP Executable pull down menu.

XDebug and Eclipse PDT

In the PHP Executables dialog, I Clicked Add, filled in the name (PHP with XDebug), and entered the path to the PHP executable - on my system this is /usr/bin/php but if you don’t know, then in a terminal, run

which php

to find out where the php command is run from. I also entered the location of php.ini - again, on my system, this is /etc/php5/apache2/php.ini - and selected XDebug as the PHP debugger:

Xdebug - set up PHP Executable in Eclipse PDT

Clicked OK, then went back to the PHP -> Debug preferences screen, and selected the PHP Executable just created in the PHP Executable pull down. Finally, in the Debug -> Workbench Options option in the left, I selected “Never” for the “allow multiple debug sessions” option, since Xdebug does not support them.

Finally, I needed to set the Default Web Browser in Eclipse, to that when I debug a script, the output is sent to Firefox. Again in Preferences, I navigated to General -> Web Browser, and clicked “New”. It’s pretty straight forward stuff - entering a name and location - Firefox, and /usr/bin/firefox. Again, if you don’t know the location of the firefox binary, in a terminal run:

which firefox

With this done, and the preferences saved, I can now debug my scripts using Xdebug!

Using Xdebug in PDT

References:

http://www.xdebug.org/docs/install
http://www.eclipse.org/pdt/documents/XDebugGuide.pdf
http://devzone.zend.com/article/2803-Introducing-xdebug



HP tx2000z 2.4Ghz CPU 3GB 250GB HDD Laptop Notebook
US $705.00 (37 Bids)
End Date: Thursday Dec-04-2008 12:00:00 PST
Bid now | Add to watch list
Dell LATITUDE D820 Dual Core Duo Laptop Notebook Win XP
US $435.50 (17 Bids)
End Date: Thursday Dec-04-2008 12:10:00 PST
Bid now | Add to watch list
Dell LATITUDE D820 Dual Core Duo Laptop Notebook Win XP
US $457.00 (41 Bids)
End Date: Thursday Dec-04-2008 12:20:00 PST
Bid now | Add to watch list
Dell LATITUDE D820 Dual Core Duo Laptop Notebook Win XP
US $466.00 (31 Bids)
End Date: Thursday Dec-04-2008 12:30:00 PST
Bid now | Add to watch list
New Compaq Presario CQ50-139WM Notebook 15.4" Laptop
US $405.00 (28 Bids)
End Date: Thursday Dec-04-2008 12:30:26 PST
Bid now | Add to watch list
Dell LATITUDE D820 Dual Core Duo Laptop Notebook Win XP
US $410.25 (29 Bids)
End Date: Thursday Dec-04-2008 12:40:00 PST
Bid now | Add to watch list
Dell LATITUDE D820 Dual Core Duo Laptop Notebook Win XP
US $660.00 (38 Bids)
End Date: Thursday Dec-04-2008 12:50:00 PST
Bid now | Add to watch list
HP 17" Pavilion dv9819wm Laptop PC Computer notebook
US $590.00 (28 Bids)
End Date: Thursday Dec-04-2008 12:58:07 PST
Bid now | Add to watch list


  • Digg
  • del.icio.us
  • Facebook
  • Google
  • Reddit
  • StumbleUpon
  • Technorati
  • Slashdot
  • TwitThis
  • Yahoo! Buzz

Related posts:

  1. Eclipse PDT and MySQL - SQL Explorer Plugin
  2. 64 Bit Eclipse: Linux Installation, including PDT, WTP (WST), ATF, and MySQL (SQL Explorer Plugin)
  3. 64 Bit Eclipse 3.4 (Ganymede) IDE with PDT and SQL Explorer - Full PHP/MySQL Web Application IDE
  4. Eclipse PDT IDE for PHP MySQL 32 Bit install on 64 Bit Ubuntu
  5. Traversing, and opening include files in Eclipse IDE

Related posts brought to you by Yet Another Related Posts Plugin.

written by Hodge \\ tags: , ,

10 Responses to “Debugging PHP Applications with Xdebug and Eclipse PDT”

  1. Debugging PHP Applications with Xdebug and Eclipse PDT : HowtoMatrix Says:

    [...] Read more at 64 Bit Jungle [...]

  2. Pablo Says:

    Hi… thanks for your note.

    I have one question… Where I can get this eclipse theme? I want a dark interface to my Eclipse Installation.

    Sory, but my english is bad :(

    Thanks!

  3. KomarBang Says:

    I wanna say “Thank YOU”!!!
    You realy help me!

  4. xylene2301 Says:

    wow! thouroughly explained and it actually all worked! Thanks so much!!!

  5. Sky Says:

    These are some of the best tutorials I have found for a ubuntu newbe like myself. you list every step and asssume nothing. I am learning a lot. However I am stuck.
    When I click on Debug (F11) a firefox ‘opening index.php’ window pops up and asks if I want to open or save the file!

    PHP is definitely installed (clicking run works) xdebug is on the phpinfo.
    When I tired to find the location of php, it could not be found (although it was definitely already there.) I tried reinstalling it and pointing to it, but that has made no difference. anyone have any ideas?

  6. Hodge Says:

    Thanks for the positive feedback all!

    @Pablo - the theme is just an Ubuntu dark theme, with some updates to the Eclipse display settings to create a dark background in the editor. You can change them in the Eclipse Preferences - specifically, the General -> Editors -> Text Editors section, and the PHP -> Editor -> Syntax Colouring sections.

    @Sky - could be a PHP/Apache misconfiguration - can you post the results to:

    more /var/log/apache2/error.log | tail

    and also the error_log file in the root directory of the site you’re debugging, just after running the debugger? For example, if your website is being developed in /home//public_html then run:

    more /home//public_html/error_log | tail

  7. Sky Says:

    Thanks for helping

    more /var/log/apache2/error.log | tail

    [Sun Nov 16 13:20:15 2008] [notice] child pid 10261 exit signal Segmentation fault (11)
    [Sun Nov 16 13:21:54 2008] [notice] child pid 10263 exit signal Segmentation fault (11)
    [Sun Nov 16 13:21:54 2008] [notice] child pid 10264 exit signal Segmentation fault (11)
    [Sun Nov 16 15:16:45 2008] [notice] child pid 10289 exit signal Segmentation fault (11)

    Server root is /home/sky/www/ project root is /home/sky/www/TestProject2/
    more /home/sky/www/TestProject2/error_log | tail
    /home/sky/www/TestProject2/error_log: No such file or directory
    more /home/sky/www/error_log | tail
    /home/sky/www/error_log: No such file or directory

    I’m currently running on the all in one (europa) pdt package, using your method of runnging 32bit eclipse on a 64 ubuntu.

    I’ve tried Ganymede as per your instructions (both 64 and 32 bit). I get an error when I try and open php files, which I havn’t been able to find any help with :
    An error has occurred. See error log for more details.
    org.eclipse.dltk.internal.ui.editor.EditorUtility.getEditorInputModelElement(Lorg/eclipse/ui/IEditorPart;Z)Lorg/eclipse/dltk/core/IModelElement;

    I’ve also tried the zend all in one. php files run but the debugger does not catch anything.
    I’ve even tried getting xdebug to work on the zend instal but the software update does not work - can’t connect to server for some reason.

    I followed these instructions to instal AMP http://ubuntuguide.org/wiki/Ubuntu:Hardy#Install_a_LAMP_server_on_a_Desktop

  8. Sky Says:

    Update: I tried going through the whole process again.
    The only difference is that I am pointing at php5 in the preferences instead of php. (I tried this before with no effect.)
    It still does not work, but it no longer brings up the save dialog. It just loads the page and break points are not triggered. more /var/log/apache2/error.log | tail no longer lists the segmentation fault.

  9. Sky Says:

    It’s working.
    I added
    xdebug.remote_enable=On
    xdebug.remote_host=”localhost”
    xdebug.remote_port=9000
    xdebug.remote_handler=”dbgp”
    to the php.ini file rather than just the xdebug.ini file.
    could this be because the xdebug.ini file is in etc/php5/conf.d and not in /etc/php5/apache2 ?

  10. Hodge Says:

    Hi Sky,

    glad to hear you got it all working! If you’re using Ununtu, the config file should be /etc/php5/apache2/conf.d/xdebug.ini since all of the apache/php config files are now split into modules in Ubuntu. Effectively, these are just extensions of the main php.ini file, and should be the same as adding the lines to php.ini. Since you have it working, I’d leave it be :)

    You may also be interested in Xdebug’s profiling functionality, by the way. You can switch it on by adding

    xdebug.profiler_enable = 1

    to the xdebug.ini (or, in your case the php.ini) file, then restart apache. Every time a page is processed, a file is dumped into the /tmp directory which you can open with a program such as kcachegrind and will give you a load of information on function processing time etc. Great for finding bottlenecks in code etc.

    Remember to switch profiling off when you don’t need it! Otherwise, you’ll have hundreds of files dumped.

Leave a Reply

Webloogle Blog Directory