I agree with
Sean, it's very useful to discuss the tools we use for development.
When I started PHP development 4-5 years ago, a simple texteditor and an FTP client was enough to achieve my goals. During the years I've quit my job and began freelancing. I needed to set up a stable development environment without changing to unix at that time. Starting with w98, then changed to w2k, now I'm using WinXP and I'd like to give some good advice for those who work in a similar environment. Most of the tools I use are cross-platform so hopefully everyone can benefit from these ideas.
The basic tools needed of course are a webserver,
PHP itself and some database server. I suggest you to use
Apache (or Apache2) as a webserver software on your development box. Some weeks ago there was a heavy discussion in the apache/php community on why PHP didn't recommend the usage of Apache2. I don't know where this went, what I know is that I'm using Apache2 since December and had no problems with it so far. I use
mySQL 4.1 also without any troubles and of course I have
PEAR installed for PHP. All of this resides in c:\apache2\, c:\apache2\php\, c:\apache2\mysql\; c:\apache2\php\PEAR\. I remember myself having a hard time with spaces in directory names so I recommand you
not to have spaces in your paths (i.e. I don't think c:\Program Files\ is a good idea). Regarding the database server,
PostgreSQL 8 has a native installer for Windows now and the installation went fine.
If you work with OOP and heavily use external (i.e. not written by you) classes and/or you have to work on existing applications written by others and/or are not satisfied with the functionality that a text editor provides, you may need an IDE. I didn't like Zend Studio 3.5 but the new version (4.0) simply rocks. I'm satisfied with it since the very first day so my vote goes for Zend Studio 4 + Zend Studio Server.
My thoughts regarding it didn't change since posting. The other IDE I seem to like is
Xored Trustudio (here would I like to thank for the Xored guys for sending a free professional key to me in return for my bug reports. It was a great surprise!). Trustudio uses
Eclipse as a base platform.
EditPlus 2 is my preferred text editor but it's far not an IDE so I don't use it for PHP development.
When it comes to web development + browser, I say
Firefox. Nothing can beat it with the
Web Developer Toolbar, especially if you need to do some client-side development (html, css, js) too. Of course you should have IE and maybe Opera also on your system to see if your pages look the same in the most popular browsers. Usually my designer friends help me out so I don't have to do too much HTML coding (though 3 weeks ago I had to learn about tableless CSS design and I loved it!).
Versioning should be also essential for todays PHP developers. Although I do the development on Windows, I prefer command-line clients and servers over those GUI apps like
this. Not that they are not good but I prefer not to use the mouse when not necessary.
eSVN is currently the only GUI tool (SVN Repistory Browser) which I happen to use sometimes. Everybody starting out with versioning today should go directly with
Subversion. You should also get a user-level knowledge of
CVS, especially if you plan to rely on open-source technology because huge communities like
PHP & SourceForge still use CVS.
If you do server administration as well, you might need
putty and/or
winscp. I use the good old
LeechFTP for a long time now, it's freeware and supports multi-thread operations.
FlashFXP costs some money. My decision for choosing this software was that it ignore .svn directories easily by applying file masks. A basic feature for all FTP clients today should be the ability to process directories recursively.
In the near future, I'd like to change from transferring files manually via FTP to something much more intelligent and powerful. Greg made so damn much development on the PEAR installer recently. First, I'll package my projects as PEAR packages, then I plan to set up my own PEAR channel(s) and publish my projects there. Now it is possible to
install PEAR packages on a remote host which does also use FTP for transferring the files, but no more manual transfers are needed. The installer is not yet ready for deploying applications but I think I'll get where I want if I invest some time into it.
Though I trust my brain,
Freemind is a great tool for organizing all the things that are going on in my head.
I found
Adobe Photoshop and
IrfanView to be the best image processing tools for website development.
I think it's not neccessary to stress the importance of using a firewall software when you are connected to the Internet. Earlier I used
ZoneAlarm, now I use
Kerio. Additionally, I'm not directly connected to the Internet but through the firewall of my ISP, I don't even have a public IP address (but I could have of course if I wanted).
Always be prepared for hardware failures! I cannot count how many times I lost data because my HDDs crashed. You should have a
good backup strategy. Currently I use
Nero for burning backups. The only thing that makes me unhappy is that its command-line client cannot start the burning of a data cd (except from an .iso file).
You might also want to communicate your thoughts to others and/or keep in touch with them. For mailing purposes, I use
ThunderBird and also have
PopTray installed so ThunderBird doesn't have to run continously to notify me about incoming messages.
serendipity is my preferred blog engine,
dokuwiki is my favourite wiki and I use
Trillian to be available on most networks (
GAIM crashed too many times on
my WinXP).
Oh, I forgot to mention
OpenOffice.org,
WinZip and sometimes I need
WinRAR too.
The last important software on my development box is
Winamp, I just can't live without music.
So this is how my environment looks like, how's yours?