Skip to content

Commit

Permalink
Upgrade/Install: Fix moving plugins folder in `WP_Upgrader:: move_to_…
Browse files Browse the repository at this point in the history
…temp_backup_dir()`.

[51815] introduced the creation of a temporary backup of plugins before updating.

The `move()` (and later, `move_dir()`) call) uses a `$src` parameter.
For Hello Dolly, this is `<path>/wp-contents/plugins/.` (note the period at the end).

For users on Linux and Mac, this doesn't appear to cause any problems.
However, on Windows, the move causes the plugins folder to be moved which then causes a failure when attempting to call `mkdir()`.

This commit skips any plugin whose slug is `'.'` as this slug results in the `$src` value ending in a period. 

Follow-up to [51815].

Props costdev, boniu91, hellofromTonya.
Fixes #54543.

git-svn-id: https://develop.svn.wordpress.org/trunk@52337 602fd350-edb4-49c9-b593-d223f7449a82
  • Loading branch information
hellofromtonya committed Dec 7, 2021
1 parent eb1763d commit 39d6d8c
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/wp-admin/includes/class-wp-upgrader.php
Original file line number Diff line number Diff line change
Expand Up @@ -1025,6 +1025,17 @@ public function move_to_temp_backup_dir( $args ) {
return false;
}

/**
* Skip any plugin that has "." as its slug.
* A slug of "." will result in a `$src` value ending in a period.
*
* On Windows, this will cause the 'plugins' folder to be moved,
* and will cause a failure when attempting to call `mkdir()`.
*/
if ( '.' === $args['slug'] ) {
return false;
}

$dest_dir = $wp_filesystem->wp_content_dir() . 'upgrade/temp-backup/';
// Create the temp-backup directory if it doesn't exist.
if ( (
Expand Down

0 comments on commit 39d6d8c

Please sign in to comment.