@samuel Wood
I’m going to refrain from getting grumpy and reiterate what I said in an earlier post that appears to have gone unread.
I have checked all permissions for the plugins directory and associated subdirectories and the permissions are UMASK 022 (for those of you unfamiliar with Linux permissions, that means 0755 on directories and 0644 on files) and owned by apache:apache (the proper web server user for my platform). When I install a plugin I don’t currently have installed via the plugins page, it installs properly and without incident into that directory with precisely the same permissions the existing, unable-to-be-read directories and files have. The interface can now see the new plugin, but not the old one.
If I try to reinstall an old plugin, the interface says it cannot, as the directory already exists and refuses to continue (so, it can see the directory when trying to install something new, but will not read it when trying to upgrade from a previous version). By removing the old plugin (running a mv <directoryname> to <directoryname-BAK> and reinstalling it, the plugin installs without issue. By taking a recursive file/permission list and diff-ing the <directoryname> and <directoryname-BAK>, I get NO DIFFERENCES between the two directory trees including filenames, permissions, and ownerships.
Extended File Attributes are not being used. ACLs are not being used. SELinux is not being used.
For whatever reason, WordPress refuses to recurse that subdirectory that was working minutes before the upgrade. I have restored the previous installation and installed even more plugins, run the upgrade, and all plugins disappear.