The problem, IE freezes
I’ve recently noticed a trend on Windows PCs, if you can call 3 PCs a trend, whereby IE freezes when requesting an EasyPHP/Apache hosted page. This doesn’t affect the other browsers like Chrome, Firefox and Opera. Its just Internet Explorer, so simplistic logical thinking brought me to the conclusion “if IE freezes then IE is to blame”. The results from Apache’s log seemed to back this up too however Fiddler told a slightly different story. The request was made, its just Apache never did anything with it. Its not that IE freezes, its that Apache does.
The solution, blame Apache
I’ll leave out the searches and possibilities and get to the solution. Apache 2.4.2 has a bug to do with SSL that causes IE freezes. Sometimes these occur sporadically, other times they happen on every request. The thing to do is replace EasyPHP’s version of Apache with the newer 2.4.3 version and make a small config mod.
To check if you have hit this problem too, look in your Apache error log. If you see “AH00341: winnt_accept: Asynchronous AcceptEx failed.” then its likely this solution will fix your IE freezes. The following link provides a discussion of the problem including the solution.
This next link is the ApacheLounge’s download page for win32 and win64 binaries (I believe EasyPHP only comes in win32 form, so the mods to get it running the 64 bit version involve more work than just replacing Apache, all the linked libraries need to be 64 bit too)
Once you have the new version of Apache downloaded:
- Stop Apache from running.
- Rename the current apache folder (you’ll need a few things from it in a minute.)
- Extract Apache 2.4.3 into EasyPHP (don’t forget to rename the containing folder to be just apache).
- Rename the httpd.exe inside /apache/bin/ to be apache.exe.
- Perform a diff to see which files are missing, from memory php.ini and about 5 .dlls need to be copied over.
- Finally merge your old config into the new httpd.conf file and add in the config to stop the SSL problem occurring. (see the article on apachelounge above for more indepth instructions, ignore the pessimists, the fix works)
The config that needs to be added to httpd.conf is:
AcceptFilter https none AcceptFilter http none EnableSendfile Off EnableMMAP off
I added these four lines below the mime_module config.
Restart Apache and you should be up and running with no more IE freezes. If your homepage works but all others fail, you probably missed a difference like I did. The mod_rewrite is disabled by default in the Apache 2.4.3’s .config file.
As far as I can see, the AcceptFilter directive only really works on FreeBSD and Linux (to a lesser extent) so there isn’t any benefit from having them on Windows. I could be wrong though… In any case, its only a development environment so a few milliseconds slower shouldn’t be a problem.