From 0b5729216db596b9fa10ab35c58f300543e6fc54 Mon Sep 17 00:00:00 2001 From: Andrew Nacin Date: Mon, 7 Apr 2014 20:15:15 +0000 Subject: [PATCH] Don't try to resolve symlinks for single-file plugins. plugins_url() should not be used in this context anyway. props rmccue. fixes #16953. Built from https://develop.svn.wordpress.org/trunk@27999 git-svn-id: http://core.svn.wordpress.org/trunk@27829 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/plugin.php | 14 ++++++++++++++ wp-settings.php | 1 - 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/wp-includes/plugin.php b/wp-includes/plugin.php index f5d213d356..33e8963e57 100644 --- a/wp-includes/plugin.php +++ b/wp-includes/plugin.php @@ -638,16 +638,30 @@ function plugin_basename( $file ) { * This is used in {@see plugin_basename()} to resolve symlinked paths. * * @param string $file Known path to the file. + * @return bool Whether the path was able to be registered. */ function wp_register_plugin_realpath( $file ) { global $wp_plugin_paths; + // Normalize, but store as static to avoid recalculation of a constant value + static $wp_plugin_path, $wpmu_plugin_path; + if ( ! isset( $wp_plugin_path ) ) { + $wp_plugin_path = wp_normalize_path( WP_PLUGIN_DIR ); + $wpmu_plugin_path = wp_normalize_path( WPMU_PLUGIN_DIR ); + } + $plugin_path = wp_normalize_path( dirname( $file ) ); $plugin_realpath = wp_normalize_path( dirname( realpath( $file ) ) ); + if ( $plugin_path === $wp_plugin_path || $plugin_path === $wpmu_plugin_path ) { + return false; + } + if ( $plugin_path !== $plugin_realpath ) { $wp_plugin_paths[ $plugin_path ] = $plugin_realpath; } + + return true; } /** diff --git a/wp-settings.php b/wp-settings.php index aee35b3e9c..9f73195023 100644 --- a/wp-settings.php +++ b/wp-settings.php @@ -168,7 +168,6 @@ $GLOBALS['wp_plugin_paths'] = array(); // Load must-use plugins. foreach ( wp_get_mu_plugins() as $mu_plugin ) { - wp_register_plugin_realpath( $mu_plugin ); include_once( $mu_plugin ); } unset( $mu_plugin );