Symfony development under Microsoft Windows
I would like to start a serie of articles showing how we develop our symfony projects. Many of you might be developing this way for ages, but I hope you still find some interesting hints or ideas. In this article I would like to describe development strategies under Microsoft Windows.
Linux or Mac OS is in my opinion better suited for symfony development than Windows. It's mostly thanks to the great shell console and better PHP/Apache support (I will explain later). But due to many reasons I am using Windows as my primary OS and I am satisfied with it. For many years I was using Windows Apache/PHP/MySQL ports to develop web applications, but as everyone developing this way knows it has some downfalls.
PHP extension troubles
Everytime I needed some exotic extension which wasn't part of the standard PHP package, I wasn't able to find windows binary of the latest version. The rule was I always found the binary of version prior to some major bug fix or feature extension. And this was frustrating, because the bug fix or feature was what I was looking for. I forced my C++ colleague to try and make me a binary many times but without success. I had to abandon the extension and write some dirty code to provide the functionality.
Command line troubles
I don't know why Microsoft doesn't pay any attention to finaly making command line as usable as Unix shell. Command line is not user friendly at all, many essential features are missing and maybe it's just me, but I am missing more colours. I am no linux guru, but I really like shell console. If you are developing symfony project you are switching between IDE, browser and shell all the time. And having powerfull shell or command line is a must have.
Solution?
I was using cygwin for a few weeks to have shell console on my Windows computer. But it booted slowly and it was hard to install additional software. Then more than a year ago I tried to install Ubuntu Server into VirtualBox and I am using this solution ever since. VirtualBox is a virtualization tool. It creates virtual computer which can run within your operating system.
I installed Ubuntu Server distro and attached local computer folders containing my projects. Apache is configured to use the project folder as a virtual server document root. Ubuntu Server doesn't take much memory and I can't feel any slow down compared to standard Windows Apache/PHP/MySQL installation. I didn't make any measurements because speed wasn't my primary target. What I gain is incredibly easy PHP extension installation and powerfull shell on my windows discs (putty connected through SSH to the virtual server).
In my next article, I would like to show step by step Ubuntu Server installation and VirtualBox configuration. And if you won't be bored to death after that I would describe how to setup stagging and deployment virtual servers which will make project deployment easy and safe task.
Author: Frantisek Troster


