Using WordPress ‘get_filesystem_method()’ PHP function

The get_filesystem_method() WordPress PHP function determines which method to use for reading, writing, modifying, or deleting files on the filesystem.


get_filesystem_method( $args = array(), $context = '', $allow_relaxed_file_ownership = false );

Custom example:


$method = get_filesystem_method( array( 'ftp_base' => '/public_html/' ), ABSPATH, true );
echo $method;


'direct' or 'ssh2' or 'ftpext' or 'ftpsockets'


  • $args (array) – Optional. Connection details. Default: array()
  • $context (string) – Optional. Full path to the directory that is tested for being writable. Default: ''
  • $allow_relaxed_file_ownership (bool) – Optional. Whether to allow Group/World writable. Default: false

More information

See WordPress Developer Resources: get_filesystem_method


Get the default filesystem method

This example retrieves the default filesystem method without specifying any parameters.

$default_method = get_filesystem_method();
echo $default_method; // 'direct' or 'ssh2' or 'ftpext' or 'ftpsockets'

Specify FTP connection details

This example specifies FTP connection details, including the base path.

$ftp_args = array(
  'ftp_base' => '/public_html/',
  'ftp_user' => 'yourftpuser',
  'ftp_pass' => 'yourftppassword',
$ftp_method = get_filesystem_method( $ftp_args );
echo $ftp_method; // 'direct' or 'ssh2' or 'ftpext' or 'ftpsockets'

Specify a custom context

This example specifies a custom context (full path to the directory) to test for being writable.

$custom_context = '/var/www/html/wp-content/uploads/';
$context_method = get_filesystem_method( array(), $custom_context );
echo $context_method; // 'direct' or 'ssh2' or 'ftpext' or 'ftpsockets'

Allow relaxed file ownership

This example allows Group/World writable file ownership.

$relaxed_file_ownership = get_filesystem_method( array(), '', true );
echo $relaxed_file_ownership; // 'direct' or 'ssh2' or 'ftpext' or 'ftpsockets'

Combining all parameters

This example combines all the parameters, including FTP connection details, custom context, and allowing relaxed file ownership.

$combined_args = array(
  'ftp_base' => '/public_html/',
  'ftp_user' => 'yourftpuser',
  'ftp_pass' => 'yourftppassword',
$combined_context = '/var/www/html/wp-content/uploads/';
$combined_method = get_filesystem_method( $combined_args, $combined_context, true );
echo $combined_method; // 'direct' or 'ssh2' or 'ftpext' or 'ftpsockets'