Recently has a server that would not run WordPress updates or plugin installs no matter what I did. After extensive troubleshooting, it turned out the server had SELinux enabled which disallows outbound connections from Apache.
One useful tool in troubleshooting update problems is the Background Update Tester plugin:
http://wordpress.org/plugins/background-update-tester/
It gives some extra detail on why updates can’t run.