Title: WP_Filesystem_FTPext::dirlist
Published: April 25, 2014
Last modified: May 20, 2026

---

# WP_Filesystem_FTPext::dirlist( string $path = '.', bool $include_hidden = true, bool $recursive = false ): array|false

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#wp--skip-link--target)

Gets details for files in a directory or a specific file.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#parameters)󠁿

 `$path`stringoptional

Path to directory or file.

Default:`'.'`

`$include_hidden`booloptional

Whether to include details of hidden ("." prefixed) files.

Default:`true`

`$recursive`booloptional

Whether to recursively include file details in nested directories.

Default:`false`

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#return)󠁿

 array|false Array of arrays containing file information. False if unable to list
directory contents.

 * `...$0` array
 *  Array of file information. Note that some elements may not be available on all
   filesystems.
    - `name` string
    - Name of the file or directory.
    - `perms` string
    - *nix representation of permissions.
    - `permsn` string
    - Octal representation of permissions.
    - `number` int|string|false
    - File number. May be a numeric string. False if not available.
    - `owner` string|false
    - Owner name or ID, or false if not available.
    - `group` string|false
    - File permissions group, or false if not available.
    - `size` int|string|false
    - Size of file in bytes. May be a numeric string.
       False if not available.
    - `lastmodunix` int|string|false
    - Last modified unix timestamp. May be a numeric string.
       False if not available.
    - `lastmod` string|false
    - Last modified month (3 letters) and day (without leading 0), or false if not
      available.
    - `time` string|false
    - Last modified time, or false if not available.
    - `type` string
    - Type of resource. `'f'` for file, `'d'` for directory, `'l'` for link.
    - `files` array|false
    - If a directory and `$recursive` is true, contains another array of files. 
      False if unable to list directory contents.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#source)󠁿

    ```php
    public function dirlist( $path = '.', $include_hidden = true, $recursive = false ) {
    	if ( $this->is_file( $path ) ) {
    		$limit_file = basename( $path );
    		$path       = dirname( $path ) . '/';
    	} else {
    		$limit_file = false;
    	}

    	$pwd = ftp_pwd( $this->link );

    	if ( ! @ftp_chdir( $this->link, $path ) ) { // Can't change to folder = folder doesn't exist.
    		return false;
    	}

    	$list = ftp_rawlist( $this->link, '-a', false );

    	@ftp_chdir( $this->link, $pwd );

    	if ( empty( $list ) ) { // Empty array = non-existent folder (real folder will show . at least).
    		return false;
    	}

    	$dirlist = array();

    	foreach ( $list as $k => $v ) {
    		$entry = $this->parselisting( $v );

    		if ( empty( $entry ) ) {
    			continue;
    		}

    		if ( '.' === $entry['name'] || '..' === $entry['name'] ) {
    			continue;
    		}

    		if ( ! $include_hidden && '.' === $entry['name'][0] ) {
    			continue;
    		}

    		if ( $limit_file && $entry['name'] !== $limit_file ) {
    			continue;
    		}

    		$dirlist[ $entry['name'] ] = $entry;
    	}

    	$path = trailingslashit( $path );
    	$ret  = array();

    	foreach ( (array) $dirlist as $struc ) {
    		if ( 'd' === $struc['type'] ) {
    			if ( $recursive ) {
    				$struc['files'] = $this->dirlist( $path . $struc['name'], $include_hidden, $recursive );
    			} else {
    				$struc['files'] = array();
    			}
    		}

    		$ret[ $struc['name'] ] = $struc;
    	}

    	return $ret;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-admin/includes/class-wp-filesystem-ftpext.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-admin/includes/class-wp-filesystem-ftpext.php#L757)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-admin/includes/class-wp-filesystem-ftpext.php#L757-L819)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#related)󠁿

| Uses | Description | 
| [WP_Filesystem_FTPext::is_file()](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/is_file/)`wp-admin/includes/class-wp-filesystem-ftpext.php` |

Checks if resource is a file.

  | 
| [WP_Filesystem_FTPext::parselisting()](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/parselisting/)`wp-admin/includes/class-wp-filesystem-ftpext.php` |

Parses an individual entry from the FTP LIST command output.

  | 
| [WP_Filesystem_FTPext::dirlist()](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/)`wp-admin/includes/class-wp-filesystem-ftpext.php` |

Gets details for files in a directory or a specific file.

  | 
| [trailingslashit()](https://developer.wordpress.org/reference/functions/trailingslashit/)`wp-includes/formatting.php` |

Appends a trailing slash.

  |

[Show 1 more](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#)

| Used by | Description | 
| [WP_Filesystem_FTPext::dirlist()](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/)`wp-admin/includes/class-wp-filesystem-ftpext.php` |

Gets details for files in a directory or a specific file.

  | 
| [WP_Filesystem_FTPext::chmod()](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/chmod/)`wp-admin/includes/class-wp-filesystem-ftpext.php` |

Changes filesystem permissions.

  | 
| [WP_Filesystem_FTPext::owner()](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/owner/)`wp-admin/includes/class-wp-filesystem-ftpext.php` |

Gets the file owner.

  | 
| [WP_Filesystem_FTPext::getchmod()](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/getchmod/)`wp-admin/includes/class-wp-filesystem-ftpext.php` |

Gets the permissions of the specified file or filepath in their octal format.

  | 
| [WP_Filesystem_FTPext::group()](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/group/)`wp-admin/includes/class-wp-filesystem-ftpext.php` |

Gets the file’s group.

  | 
| [WP_Filesystem_FTPext::delete()](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/delete/)`wp-admin/includes/class-wp-filesystem-ftpext.php` |

Deletes a file or directory.

  |

[Show 1 more](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_filesystem_ftpext/dirlist/?output_format=md#changelog)󠁿

| Version | Description | 
| [2.5.0](https://developer.wordpress.org/reference/since/2.5.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_filesystem_ftpext%2Fdirlist%2F)
before being able to contribute a note or feedback.