With a few other colleagues we went to investigate why WordPress wouldn't save permalinks on Windows Server. Because of recent issues we encountered with Helicon Ape and the .NET Framework (more on that in a later post), that was our fist point of investigation. Maybe a recent update of Helicon Ape, or the .NET Framework (Patch Tuesday security updates), broke some permission structure? Well, we were wrong...
During investigation one colleague looked at the file wp-include/vars.php
, and he noticed a hard check on IIS versions 7.(*). The result was that WordPress 3.5 on IIS 8.0 is unable to write a web.config file, due to insufficient server version checking. Did the WordPress developers never think of IIS 8.0? Are we the first hosting company hosting WordPress websites on IIS 8.0? ;-)
Want to see? Open up your wp-include/vars.php
file and look at lines 95 - 99:
/**
* Whether the server software is IIS 7.X
* @global bool $is_iis7
*/
$is_iis7 = $is_IIS && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/7.') !== false);
Quick fix for WordPress 3.5+ and IIS 8.0
The quickest fix is to change this line to:
$is_iis7 = $is_IIS && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/7.')
|| strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/8.') !== false);
This extends the check to IIS "7.*" or "8.*", but I can imagine a more elegant fix would exist.
WordPress 3.5 on IIS 8.0 bug reported
We filed this as a bug in ticket #23533 on core.trac.wordpress.org. We're confident a proper fix will be released soon. According to the WordPress devs, the bug was introduced in WordPress 3.4.
Wordpress' patch
Updated: 9-7-2013:
You can find the approved patch for the reported bug in WordPress Changeset 24594.