Right on the heels of version 2.8, we will be seeing a WordPress 2.8.1 release soon. There are several minor bugfixes in so far, mostly dealing with tweaks to plugin and menu management. But the big problem driving a quick update is a bug in the core upgrade feature. It seems that in the case where the upgrade can’t be completed for some reason, the upgrade feature was deleting the wrong files when it attempted to clean up. Oops!
On the bright side, when this did happen, it would only delete files that are part of the core package, not any of your plugin or theme files. So the failure could be fixed pretty easily, by just manually re-installing the 2.7.1 or 2.8 files from a zip archive. Nothing would be lost except perhaps a few heartbeats of panic.
Looking at the auto-upgrade process, here are the steps outlined in the code:
- Test unzipped location for select files to ensure that unzipped worked.
- Create the .maintenance file in current WordPress base.
- Copy new WordPress directory over old WordPress files.
- Upgrade WordPress to new version.
- Delete new WordPress directory path.
- Delete .maintenance file.
- Remove old files.
- Delete ‘update_core’ option.
What can happen is that if an error was detected in step 3, where it tried to copy the new files into place (probably due to file ownership or permissions), it was supposed to delete the directory of new files that it had downloaded and unzipped. Instead, it deleted from the main site directory. It was simply a case of the wrong variable being used. For those of you following the SVN repository, this has been corrected in trunk and in the 2.8 branch, where the 2.8.1 update will come from.
If you haven’t upgraded to WordPress 2.8 yet, but you want to, and you’re nervous about possibly running into this bug, you can either wait for 2.8.1 to be released or upgrade the “old fashioned” way, by unzipping and uploading the new files.