VMWare, Samba, Eclipse, and XDebug: Mixing a virtual Linux environment with a Microsoft Windows development environment
Posted: - Modified: | development, drupal, geekI’m starting the second phase of a Drupal development project, which means I get to write about all sorts of geeky things again. Hooray! So I’m investing some time into improving my environment set-up, and taking notes along the way.
This time, I’m going to try developing code in Eclipse instead of Emacs, although I’ll dip into Emacs occasionally if I need to do anything involving keyboard macros or custom automation. Setting up a good Eclipse environment will help me use XDebug for line-by-line debugging. var_dump> can only take me so far, and I still haven’t figured out how to properly use XDebug under Emacs. Configuring Eclipse will also help me help my coworkers, who tend to not be big Emacs fans. (Sigh.)
So here’s my current setup:
- A Linux server environment in VMWare, so that I can use all the Unix tools I like and so that I don’t have to fuss about with a WAMP stack
- Samba for sharing the source code between the Linux VM image and my Microsoft Windows laptop
- XDebug for debugging
- Eclipse and PDT for development
I like this because it allows me to edit files in Microsoft Windows or in Linux, and I can use step-by-step debugging instead of relying on var_dump
.
Setting up Samba
Samba allows you to share folders on the network. Edit your smb.conf
(mine’s in /etc/samba/
) and uncomment/edit the following lines:
security = user
…
[homes] comment = Home Directories browseable = no read only = no valid users = %S
You may also need to use smbpasswd
to set the user’s password.
Xdebug
Install php5-xdebug
or whatever the Xdebug package is for PHP on your system. Edit xdebug.ini
(mine’s in /etc/php5/conf.d
) and add the following lines to the end:
[Xdebug] xdebug.remote_enable=on xdebug.remote_port=9000 xdebug.remote_handler=dbgp xdebug.remote_autostart=1 xdebug.remote_connect_back=1
Warning: this allows debugging access from any computer that connects to it. Use this only on your development image. If you want to limit debugging access to a specific computer, remove the line that refers to remote_connect_back
and replace it with this:
xdebug.remote_host=YOUR.IP.ADDRESS.HERE
Eclipse and PDT
I downloaded the all-in-one PHP Development Toolkit (PDT) from http://www.eclipse.org/pdt/, unpacked it, and imported my project. After struggling with Javascript and HTML validation, I ended up disabling most of those warnings. Then I set up a debug configuration that used Xdebug and the server in the VM image, and voila! Line by line debugging with the ability to look in variables. Hooray!