Make WordPress Core

Opened 23 months ago

Closed 23 months ago

Last modified 23 months ago

#48075 closed task (blessed) (fixed)

Remove conditional use of PHP realpath()

Reported by: jrf Owned by: SergeyBiryukov
Milestone: 5.3 Priority: normal
Severity: normal Version: 5.3
Component: General Keywords: has-patch
Focuses: performance, coding-standards Cc:


While working on #48074 / looking for code which can be removed now support for PHP < 5.6.20 has been dropped, I came across two instances of conditional use of the realpath() function.

        if ( function_exists( 'realpath' ) ) {
                $path = realpath( $path );

Now, there are only two reasons I can think for this code to exist:

  1. Support for PHP < 4.

The `realpath()` function was introduced in PHP 4.0.0. It might be that this code is so ancient that it is from before that time.
I've tried to trace this back, but got stuck somewhere in 2009.

  1. Hosts disabling the function using the `disabled_functions` ini directive.

I honestly don't know if that's a thing and it would be pretty foolish (of hosts) if they did, but that's the only other reason I could think of for this code to exist.

It would be great if someone with a long memory could chime in here.

If the reason is 1), the removal of these conditions is long overdue.

If the reason is 2), based on a quick scan, there are 27 more instances within WP where realpath() is used without a function_exists() check.

I'm presuming, for now, that the reason is 1) and am attaching a patch to remove the condition.

If by some happenstance, the reason for this code would turn out to be 2), a new patch would need to be created to add the condition to the other 27 instance of realpath() in core (or better yet a wp_realpath() function or similar should be added instead).

Attachments (2)

48075-src-Remove-work-arounds-for-realpath.patch (1.4 KB) - added by jrf 23 months ago.
48075.1.patch (457 bytes) - added by dkarfa 23 months ago.

Download all attachments as: .zip

Change History (7)

23 months ago

#1 @dkarfa
23 months ago

Kindly ignore my last patch.

Last edited 23 months ago by dkarfa (previous) (diff)

#2 @netweb
23 months ago

  • Milestone changed from Awaiting Review to Future Release

#3 @SergeyBiryukov
23 months ago

  • Milestone changed from Future Release to 5.3

#4 @SergeyBiryukov
23 months ago

  • Resolution set to fixed
  • Status changed from assigned to closed

In 46210:

Code Modernization: Remove conditional use of PHP realpath().

The realpath() function was introduced in PHP 4.0.0. There's no point in checking if the function exists in PHP 5.6+, in only 2 instances out of 29.

Props jrf.
Fixes #48075.

#5 @jrf
23 months ago

Thanks @SergeyBiryukov !

Note: See TracTickets for help on using tickets.