From 001a86a7ca833535533e59dc59babddc50fe2afa Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Fri, 14 Mar 2025 12:57:10 +0000 Subject: [PATCH] Upgrade/Install: Pass stored credentials to `WP_Filesystem()` in `WP_Upgrader`. When using a non-direct filesystem, the call in `WP_Upgrader::maintenance_mode()` did not include the required credentials, leading to a fatal error as the connection was not initialized properly. This commit attempts to use the stored credentials if available, and triggers a notice otherwise. Follow-up to [56341], [58128]. Props hideishi, dd32, SergeyBiryukov. Fixes #62718. git-svn-id: https://develop.svn.wordpress.org/trunk@59981 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-upgrader.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/wp-admin/includes/class-wp-upgrader.php b/src/wp-admin/includes/class-wp-upgrader.php index 6c6cb5d828..40f19f8956 100644 --- a/src/wp-admin/includes/class-wp-upgrader.php +++ b/src/wp-admin/includes/class-wp-upgrader.php @@ -1007,9 +1007,17 @@ class WP_Upgrader { public function maintenance_mode( $enable = false ) { global $wp_filesystem; - if ( ! $wp_filesystem ) { - require_once ABSPATH . 'wp-admin/includes/file.php'; - WP_Filesystem(); + if ( ! function_exists( 'WP_Filesystem' ) ) { + require_once ABSPATH . '/wp-admin/includes/file.php'; + } + + ob_start(); + $credentials = request_filesystem_credentials( '' ); + ob_end_clean(); + + if ( false === $credentials || ! WP_Filesystem( $credentials ) ) { + wp_trigger_error( __FUNCTION__, __( 'Could not access filesystem.' ) ); + return; } $file = $wp_filesystem->abspath() . '.maintenance';