If you blog is installed in a sub-directory rather than the root, here is a list of common errors being seen when attempting wordpress upgrades or installation, upgrade, or removing plugins in wordpress versions 2.8+:

Unable to locate WordPress Plugin directory.

Warning: unlink(/tmp….

Unable to locate WordPress Content directory (wp-content)

How to fix:

The best solution is to create a new ftp login that goes directly to the sub-directory rather than to the root. This usually takes care of the problem right away. When you upgrade in the admin area, it normally asks you for this information before continuing.

If you don’t have control panel access for setting up a new ftp, Artyom’s Blog has a suggestion to try. I’ve not tested his method since I’ve had control panel access for all blogs that had issues, so try at your own risk.

Still having issues:

After clicking “Upgrade Database” – Fatal error: Call to undefined function: populate_roles_270() in /your-abspath/blog/wp-admin/includes/upgrade.php on line 904

For some odd reason, a wordpress file corrupts or does not always upload correct during manual upgrades. This actually resulted in issues through the entire admin. Simple solution was to re-upload the file: wp-admin/includes/schema.php

Yet one more issue to help:

Any error relating to tmp/anything directory couldn’t be found.

Add the following to the end of the wp-config.php file (but before ?>):

//Added the line below to correct issues with failing upgrades
//and inability to add plugins through the admin area.
putenv('TMPDIR=' . ini_get('upload_tmp_dir'));

(I suggest this as a last resort if all else has failed to stop errors, but I have tested this method and it did resolve an issue for one site.)