Symptoms

A customer cannot update or install new plugin in the WordPress 3.5 application installed as APS application in the POA Customer Control Panel.

When WordPress application installation has completed the customer logged into WordPress Administrator area (using the entry point in the POA Customer CP), clicked 'Plugins' and selected a plugin to update (for example, the default 'Akismet' plugin will usually have update available).

When updating the plugin, the following error is displayed:

Downloading update from http://downloads.wordpress.org/plugin/akismet.2.5.7.zip…
Unpacking the update…
The package could not be installed. PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file 'C:\WINDOWS\TEMP/akismet.tmp'

or

Download failed.: Could not create Temporary file

The same error message may be seen for other plugin updates or installation of a new plugin.

Cause

Most likely WordPress was not able to create a temporary file due to insufficient permissions for the 'wp-content' folder or system folder for temporary files.

Resolution

You have to temporarily change permissions for the 'wp-content' folder in the customer's webspace.

On Linux, the default permissions are '755', you may temporarily change them to '777', perform the WordPress plugin upgrade or installation and then change permissions back to '755'. It can be done via SSH, FTP or File Manager in the POA Control Panel.

On Windows, you have to grant the 'Modify' permission for this folder to application pool identity of the website.

To determine application pool for the website, you can locate the website in the IIS Manager on the Windows Shared Hosting server, then:

  1. In IIS 6 right-click the website in the IIS Manager, select 'Properties' and in the 'Home Directory' tab find the name of the application pool under the 'Application settings', see the screenshot below. Then open application pools in IIS Manager, find the application pool, right-click it, open 'Properties' and you will find user the application pool runs as in the 'Identity' tab.

  2. In IIS 7 and later, you can find application pool name in the 'Basic Settings' for the website, then open application pool and in the 'Advanced settings' you can find its identity in the 'Process Model':

If the issue persists after modifications above, it is possible that application pool identity cannot create a temporary file in the system TEMP directory ('C:\Windows\TEMP' on most systems). Ensure that the 'Users' group has the following permissions on that folder:

  • Create files / write data
  • Create folders / append data

Another way to solve the problem with creating temporary files is to change the folder for PHP temporary files in the php.ini configuration file, the corresponding parameter is the upload_tmp_dir. If the parameter is not explicitly defined in the php.ini then PHP will use the system default folder (defined by the %TEMP% system variable in Windows). One may define custom folder for PHP temporary files by changing the upload_tmp_dir parameter in the php.ini file. If you changed the folder for temporary files in the php.ini file make sure that the 'Users' group has 'Create files / write data' and 'Create folders / append data' permissions on that folder.

There is also a way to see the exact error with the Process Monitor utility from Sysinternals: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

Run this utility on a web server where WordPress application is hosted, configure filter to catch the 'ACCESS DENIED' events only and try to install WordPress plugin, Process Monitor will produce the specific user account which tried to access some directory and the exact location on file system the user attempted to access. You can then use this information to grant appropriate permissions.

Additional information on the 'Process Monitor' utility and how it can be used can be found in the Microsoft Technet article linked above.

Internal content