Developing PHP applications which support a variety of servers and environments requires me to occasionally develop on Windows. The first thing someone notice when switching from Linux or macOS to a Windows machine for PHP development is that it’s so darned slow. Even on the exact same machine, Linux is a good 2x to 5x faster than Windows. Most of the sluggishness observer, however, is down to configuration and can be mitigated. This article explains some of the tricks I used to make PHP faster on my Windows development machines.
If you want to use SSH or SFTP with PHP you need the SSH2 extension. Unfortunately MAMP doesn’t come with it out of the box. Last year I had written about how to add the SSH2 extension to MAMP, on PHP 5.6. In the meantime two major changes ocurred which pretty much nullified the process: OS X El Capitan was released requiring new prerequisites to be installed and PHP 7 was included which requires an entirely new approach to installing SSH2 (it’s no longer as simple as using pecl). In this article we’ll discuss the process required to get the SSH2 extension installed on PHP7 in MAMP.
If you want to start developing PHP applications, or merely work on your PHP-based site off-line, on Mac OS X you can easily do so. In this how-to we’ll see how you can set up NginX, a high performance web server, with the PHP version shipped with Mac OS X itself to create a local web server. In case you’re wondering, you can of course use it in parallel with MAMP, XAMPP or even the multi-PHP version server I’ve described in an earlier post.
As I’ve said many times, I am an avid user of Zend Server for local development on my Mac. It has pretty much everything you need, including a simple to use back-end for viewing issues occuring on your server which make debugging easier. Well, on the debugging front it has a major shortcoming: it comes with Zend Debugger which only works with the very expensive Zend Studio IDE. All other IDEs (Eclipse, NetBeans, phpStorm, …) only provide support for XDebug. Every time I update Zend Server I have to install and enable XDebug instead of Zend Debugger. It’s easy and will help you debugging your PHP applications easily on your local environment. This article describes how to do it.
A few months ago I had presented one way of automatically assigning subdomains on a local testing web server, without having to edit your httpf.conf file all the time. For those who hadn’t been following this blog, I’m talking about my “Holy Grail of local web development servers” article, achieving subdomain names in the format myapp.local.web by simply creating the folder myapp on your local web server’s root. Even though the solution presented last time was elegant, it lacked that supernatural touch of a really great solution. I could never quite stomach those ugly URL rewriting rules. So, here it is: we revisit this issue and improve the solution!
Whenever someone decides to launch a website, or hired to do so for a client, he’s given three broad choices which will define how they’ll proceed: static HTML, a CMS or Flash. The former being practically dead due to inflexibility and the latter being not only inflexible, but extremely costly to produce, the CMS route seems a dead end; more specifically, the Open Source CMS route.
Dead end it is. Try raising the simple, innocuous question “Which CMS should I chose for my site?” on any public forum and a war seems to spring right out of nowhere. The fighting fractions are what I usually call The Big Three: Drupal, Joomla! and WordPress fans. But is this all there is to it? Does the Open Source CMS universe revolve around only three players? Given the Open Source spirit of Freedom of choice, one would hardly expect this to be the case. In fact, it isn’t. There is more to Open Source CMS than meets the eye.
If you are a serious web developer, you might have already figured out that performing experiments and untested upgrades on production servers is a disaster waiting to happen, bringing down the live site with them. Staging live servers (in the form of dev.example.com) usually don’t cut it either, especially if you have a lot of file transferring or editing to do. However, local development is still a kludge, as you have to develop in a sub-directory, something like http://localhost/mysite. This has all sorts of implications, the most evident of which being that it breaks cross-content links if you try to pack it and deploy it back to the live site.
Ideally, you would need to develop in subdomains, something like http://mysite.localhost, which would mean that you have the flexibility of local development with the peace of mind of not having to develop in a sub-directory. But, face it. Setting up subdomains is an involving process, requiring hacking around your Apache configuration files. This is suboptimal if you want to do it regularly. Unless you come up with a way to turn http://mysite.localhost to automatically understand where it should find its files.
This article will explain you how to combine WampServer and BIND to create this kind of Holy Grail local web development server on Windows. You will configure a single DNS entry and a single virtual host in order to create a server which can handle infinite subdomains! The only pre-requisite is having a fixed IP address for your server. Well, even 127.0.0.1 will do if you can’t do anything better than that!