During the migration of my blog from Apache, running on Fedora OS, to IIS 7.0, running Windows Server 2008 R2, I’ve faced quite a few difficulties. One of them was running automatic WordPress updates. Every attempt to update WordPress to the most recent version ended up with the following error:
copy(/wp-admin/includes/update-core.php): failed to open stream: Permission denied in wp-admin\includes\class-wp-filesystem-direct.php on line 200http://kahovka-service.ru
Since the error was cleared enough and I knew my WordPress is running under IUSR account, I thought I was able to fix the problem quite easily. What I’ve done was adding IUSR account to security tab of my WordPress installation folder and giving “Modify” permission for the account. Doing that in fact solve the problem – I was able to successfully update my WordPress. Everything was great until I’ve started importing my old posts and noticed a different issue.
The new issue was related to uploading new images to my blog posts. Once the attachment is uploaded, I was able to view all resized versions of the image but the original image itself was not accessible. The server ended up with 500 error code instead showing me the image required. Since data displayed on the page was not informative enough, I’ve decided to enable “Failed Request Tracing Rules“:
Internet Information Services (IIS) Manager --> Sites --> My Site --> Failed Request Tracing Rules --> Edit Site Tracing --> Enable --> Add
That’s what I’ve saw after opening the tracing log (located at C:\inetpub\logs\FailedReqLogFiles\W3SVC1):
OK, I’m sure it’s problem with permissions again. This time I’ve decided to check account used for anonymous authentication:
Internet Information Services (IIS) Manager --> Sites --> My Site --> Authentication --> Anonymous Authentication --> Edit
Instead of “Specific User” option I saw being checked, I’ve selected “Application Pool Identity” option. After refreshing browser tab with the image which failed to load, I was glad to see that the image is now loading successfully.
After browsing the site a bit, I knew everything except one thing is working now – I was unable to delete plugins installed. Lucky, this time the issue was really easy to solve – all I had to do is add “Delete subfolders and files” special permission for IIS_IUSRS account on “wp-content” folder.
That’s it. As you see, all permissions related problems were fixed and as you can see, the blog is up and running now.