Created
October 9, 2012 13:53
-
-
Save jiphex/3858962 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Determines which Filesystem Method to use. | |
* The priority of the Transports are: Direct, SSH2, FTP PHP Extension, FTP Sockets (Via Sockets class, or fsockopen()) | |
* | |
* Note that the return value of this function can be overridden in 2 ways | |
* - By defining FS_METHOD in your <code>wp-config.php</code> file | |
* - By using the filesystem_method filter | |
* Valid values for these are: 'direct', 'ssh', 'ftpext' or 'ftpsockets' | |
* Plugins may also define a custom transport handler, See the WP_Filesystem function for more information. | |
* | |
* @since 2.5.0 | |
* | |
* @param array $args Connection details. | |
* @param string $context Full path to the directory that is tested for being writable. | |
* @return string The transport to use, see description for valid return values. | |
*/ | |
function get_filesystem_method($args = array(), $context = false) { | |
$method = defined('FS_METHOD') ? FS_METHOD : false; //Please ensure that this is either 'direct', 'ssh', 'ftpext' or 'ftpsockets' | |
if ( ! $method && function_exists('getmyuid') && function_exists('fileowner') ){ | |
if ( !$context ) | |
$context = WP_CONTENT_DIR; | |
$context = trailingslashit($context); | |
$temp_file_name = $context . 'temp-write-test-' . time(); | |
$temp_handle = @fopen($temp_file_name, 'w'); | |
if ( $temp_handle ) { | |
if ( getmyuid() == @fileowner($temp_file_name) ) | |
$method = 'direct'; | |
@fclose($temp_handle); | |
@unlink($temp_file_name); | |
} | |
} | |
if ( ! $method && isset($args['connection_type']) && 'ssh' == $args['connection_type'] && extension_loaded('ssh2') && function_exists('stream_get_contents') ) $method = 'ssh2'; | |
if ( ! $method && extension_loaded('ftp') ) $method = 'ftpext'; | |
if ( ! $method && ( extension_loaded('sockets') || function_exists('fsockopen') ) ) $method = 'ftpsockets'; //Sockets: Socket extension; PHP Mode: FSockopen / fwrite / fread | |
return apply_filters('filesystem_method', $method, $args); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment