When I pushed my latest changes out to the servers last night, things broke. Specifically, the http server was prematurely dropping the connection and so browsers were seeing most, but not all, of eac html page. Unfortunately this is really bad because all of the javascript which makes the pages work is at the end.

This wasn’t happening on my test server, but happened on both production servers. The test server is running FC5 and PHP 5.1. The production servers are FC4 and PHP 5.0. A bit of scrambling led me to suspect something to do with sessions and PHP’s session_write_close, which changed its behavior between 5.0 and 5.1 and which can, apparently, just quietly terminate your connection. I tried explicit flush(), and I tried commenting out session_write_close.

After a few hours, I gave in and decided to upgrade to FC5 (so that I could get PHP 5.1). Not exactly the best-planned of upgrades, but it went fairly smoothly nonetheless. I kicked off the upgrades around midnight last night, and this morning they appeared to have worked beautifully. A few tweaks to some config files and we’re back online!