Today, proved to be a great chance to prove why great support matters. A
production server ceased functioning after a recent upgrade, and in this case,
time was money.
The server runs the web application platform that many developers choose: IIS
and PHP. For “no reason at all” (that’s how everything really bad starts), IIS
began returning the notorious PHP CGI error: “The specified CGI application
misbehaved by not returning a complete set of HTTP headers.”
It spells doom for production sites because the site stops working.
Having seen this bug before and knowing its cunning, I headed
back once again to search message boards yet again for new clues. Perhaps
someone had miraculously solved this problem since last month when I checked the
same message boards. Documented as PHP
Bug 9852 and Bug 25863,
many users put the following hypotheses:
-
IIS has a multithreading bug and calls PHP too fast on
modern servers, but Microsoft will release
a hotfix for it.
-
It has to do with image files
-
Virus scanners cause the problem
-
etc…
The theme here seems to be that anything and nothing causes this
bug, and that’s why it is notorious.
My version of the problem was caused by bad security permissions
on recently replaced log files, but I will say there is definitely something
more to this behavior and it is related only to IIS. Site administrators running
Apache have never reported the problem. Microsoft does
list
an IIS bug that sounds very similar to the symptoms of this bug, but I do
consider it a PHP inquiry because Microsoft is unlikely to give this problem
direct attention.
I have seen applications as simple as this fail:
After adjusting security permissions, things started working
again as if the last 30 minutes had never happened. Losing 30 minutes of
business can be avoided through redundancy, but this particular client was too
early in the business plan to justify the costs of six sigma uptime. When you
can’t have the infrastructure for total reliability, it’s nice to have total
support.