A bit of a techie response, but many web sites run PHP (when under *NIX) as the user nobody or some user other than yours. So if you install WP or a module directly (as you) then later try to update via the WP admin area, the file ownerships are wrong.
A chmod 777 wp-content is not enough of a fix because the folders and files beneath may still be wrong. This is also a security concern.
And “yes”, the PHP upload limit for your host must be at least as large as the update you wish to upload. PHP has a post limit and an upload limit … and if your host cannot manage to set reasonable limits then consider hosting with 10types.com. (I did not start this response to promote, but it now strikes me that any host still deploying with a 2mb upload default does not expect their customers to do much at all.)
I think the “Could not create directory ./public_html” (or the like) is misleading because the issue is likely the wp-content/plugins or wp-content/upgrade folders.
Any host admin with root privileges should be able to fix the permissions / ownerships on your WP files. For WP deployments where I don’t have root, I:
1. Make certain that under wp-content, the cache, plugins, themes, upgrade, and uploads directories are chmod 777.
2. Make certain that the wp-content directory is chmod 755 or 750 (depending on your host) … do not make this world writeable!
If you attempt to upgrade a plugin and still get the “Could not create …” error after the 2 steps above, this means that file ownership of the plugins is wrong. To fix, use whatever file browser is available on your host to traverse to the wp-content/plugins directory and then remove the folder holding the older version of the plugin … and then use the WP admin to install the newer version.
As always … it’s a good idea to make backups of your files before attempting changes.