Make WordPress Core

Changeset 61398


Ignore:
Timestamp:
12/22/2025 01:16:28 AM (9 months ago)
Author:
westonruter
Message:

Filesystem API: Resolve FIXME comment for WP_Filesystem_Direct::getchmod() by explicitly returning '0' in error case.

Developed in https://github.com/WordPress/wordpress-develop/pull/10637

Follow-up to [11831].

Props vietcgi, westonruter.
See #10304.
Fixes #64426.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/class-wp-filesystem-direct.php

    r57644 r61398  
    250250         * Gets the permissions of the specified file or filepath in their octal format.
    251251         *
    252          * FIXME does not handle errors in fileperms()
    253          *
    254252         * @since 2.5.0
    255253         *
    256254         * @param string $file Path to the file.
    257          * @return string Mode of the file (the last 3 digits).
     255         * @return string Mode of the file (the last 3 digits), or the string "0" on failure.
    258256         */
    259257        public function getchmod( $file ) {
    260                 return substr( decoct( @fileperms( $file ) ), -3 );
     258                $perms = @fileperms( $file );
     259                if ( false === $perms ) {
     260                        return '0';
     261                }
     262
     263                return substr( decoct( $perms ), -3 );
    261264        }
    262265
  • trunk/tests/phpunit/tests/filesystem/wpFilesystemDirect/getchmod.php

    r57753 r61398  
    3434        /**
    3535         * Tests that `WP_Filesystem_Direct::getchmod()` returns
    36          * the permissions for a path that does not exist.
     36         * "0" for a path that does not exist.
    3737         *
    3838         * @dataProvider data_paths_that_do_not_exist
    3939         *
    4040         * @ticket 57774
     41         * @ticket 64426
    4142         *
    4243         * @param string $path The path.
    4344         */
    44         public function test_should_get_chmod_for_a_path_that_does_not_exist( $path ) {
     45        public function test_should_return_zero_for_a_path_that_does_not_exist( $path ) {
    4546                $actual = self::$filesystem->getchmod( self::$file_structure['test_dir']['path'] . $path );
    46                 $this->assertNotSame( '', $actual );
     47                $this->assertSame( '0', $actual );
    4748        }
    4849}
Note: See TracChangeset for help on using the changeset viewer.