It seems that there’s no silver bullet to solve this issue, but contrid’s comment above got me on the path to a solution that worked for me. Here’s what I did:
1. I FTPed into my server with Transmit (for OS X) and did a Get Info on a few of my WP directories. I noticed that wp-content was owned by a user in the “psacln” group but that my other folders were owned by root (in the “root” group).
2. Using Terminal, I SSHed into my server as root and navigated to my WP directory.
3. I performed a recursive CHOWN to change all the ownership of all files and folders to the user in the psacln group using this command:
chown -R username:psacln .
(“username” isn’t the actual user; that’s just an example. You’d need to put your actual FTP username there.)
4. Back in the WP dashboard, I performed an automatic upgrade using the same user as my CHOWN command and voila!—it worked! For the first time ever!
I’m a novice at all this server admin stuff, so I hope I didn’t screw anything up in the process. Everything seems to be running fine, though. Thanks to everyone for their help, especially contrid.