Make WordPress Core

Opened 4 years ago

Last modified 3 months ago

#18501 new defect (bug)

plugin_dir_path() returns unsanitized path on Windows installs

Reported by: johnjamesjacoby Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version: 2.8
Component: Plugins Keywords: needs-testing dev-feedback
Focuses: Cc:


Currently plugin_dir_path() only returns the result of dirname( $file ), which can produce mixed results on local Windows installations.

Attached patch takes pieces from plugin_basename() and plugins_url() to guarantee a working and accurate plugin directory path is returned in all operating systems.

See #BB1596 (and associated revisions) for back-story.

Attachments (1)

18501.patch (1.4 KB) - added by johnjamesjacoby 4 years ago.

Download all attachments as: .zip

Change History (10)

#1 follow-up: @nacin
4 years ago

Doubt there's a need to fix plugin_dir_path() -- more likely, the issue is this code in search_theme_directories():

$theme_loc = str_replace(WP_CONTENT_DIR, '', $theme_root);

#2 @johnjamesjacoby
4 years ago

Probably right.

Possibly related: #4541

#3 @dd32
4 years ago

I believe this issue mainly arises from the fact that some constants on windows environments contain a mixture of \ and / in the paths (which stems from define( 'ABSPATH', dirname(__FILE__) . '/' ); using \), whilst most core functions standardise on / in created paths.. and even some of the API's do a str_replace('\\','/'..

ideally fixing this as low as possible would be better IMHO.

#4 @ramiy
4 years ago

#19200 - Related?

#5 @sorich87
4 years ago

  • Version set to 2.8

#6 in reply to: ↑ 1 @nacin
4 years ago

Replying to nacin:

$theme_loc = str_replace(WP_CONTENT_DIR, '', $theme_root);

This is actually dead code. $theme_loc is set up but never used. It will be removed in #20103.

#7 @pavelevap
4 years ago

  • Cc pavelevap@… added

#8 @Mamaduka
3 years ago

  • Cc georgemamadashvili@… added

#9 @chriscct7
3 months ago

  • Keywords dev-feedback added; has-patch removed
Note: See TracTickets for help on using tickets.