See, I wanted a Windows based full featured PHP software development environment without spending an arm and a leg.
Candidate #1, Xored TruStudio, fell dormant after a short period of intense development. Future aspects stay uncertain.
Candidate #2, ActiveState Komodo, gave me a hard time while I was figuring out how to set up remote debugging, and I never managed to get breakpoints to work.
Candidate #3, PHPEclipse, is what I found to work for me.
- Download all necessary components manually. Do not rely on the update manager automagic built into Eclipse. The Eclipse folk are having a hard time figuring out all the correct filenames for package dependencies, so there’s a not so slight chance that the update manager will yell at you at various occasions. You’ll need (at the time of this writing)
- Eclipse SDK 3.1.2, the latest version 3.2 won’t work with PHPEclipse 1.1.8 yet.
- Eclipse Web Tools in a version matching the core Eclipse SDK framework.
- PHPEclipse. The Tool.
- DBG, a debug extension for your version of PHP. Do not even try to employ this component for a non matching version of PHP, as it will fail either in subtle ways – or crash Apache. You can either go for the official free DBG builds which cover everything from PHP 4.x up to all but the latest versions of PHP, or fetch yourself a build of the free version for PHP 5.1.4.
- A web server packaged with MySQL and PHP. Use XAMPP. Be careful to choose a package containing PHP in a version supported by the DBG extension.
- Optional: Subclipse to use your Subversion repository within the Eclipse IDE.
- Optional: Little helpers for text formatting, XPath and regular expressions. I chose Bastian Bergerhoff’s QuickREx and XPath-Explorer and AnyEdit by Andrei Loskutov.
- Install the debugger by literally following these steps and verify the correctness with
phpinfo(). XAMPP has a menu entry for that.
- Set up your first project for debugging.
So I promised a “zero budget tool chest” in this post’s title. How wrong I was… It cost me hours to weed through the incompatibilities and interdependencies of all that jazz. But how good it felt when it finally worked. Aah, rewarding!