Wrong permissions when uploading file on WordPress

Issue

When uploading an image via WordPress media library, the original image File Permissions on Windows seems to remove them entirely. All the other generated image sizes are viewable but the original image and its thumbnail are broken. This happens using regular PHP and nothing to do with WordPress as well with functions like:

move_uploaded_file($_FILES["image"]['tmp_name'], $target_file);

Solution

When you upload a file, PHP sends the file to a temporary directory on your server's hard drive (usually C:\Windows\Temp) and then copies it over to the proper directory. Once the file has is initially put in the temporary directory, it gets the permissions of that directory. The problem is when Windows moves that file to the proper place, it keeps the temporary directory’s permissions, which can cause access problems.

If you can’t upload an image at all, it’s probably because you need to give the IUSR account Read/Write/Modify permission on your wp-content folder. This will allow you to upload, and do the WordPress & plugin updates.

Once you have done that, all you need to do is give the IIS_IUSRS group Read permissions on your "C:\Windows\Temp" folder.

Make sure to notice that the two permission changes you make are not for the same user/group. Give IUSR permissions on your wp-content folder and IIS_IUSRS permissions on your Windows temp folder.

Note: If you have edited your php.ini file and change the upload temp directory then you will need to give IIS_IUSRS group read permissions on that folder instead.

The way to fix this is to change the temporary directory to a folder within your WordPress installation, usually wp-content/upgrade.

To do this, follow these directions:

  1. Find your php.ini file.
  2. Find the upload_tmp_dir line, and change it to the wp-content/upgrade folder.
  3. Browse to this folder and verify that the permissions are set properly.
  4. You should then have the ability to properly view all your images. You'll most likely need to select all the previous selected images, and change the owner of the files to the web folder owner.