win_is_writable
Workaround for Windows bug in is_writable() function.
Description
win_is_writable( (string) $path );
PHP has issues with Windows ACL's for determine if a directory is writable or not, this works around them by checking the ability to open files rather than relying upon PHP to interprate the OS ACL.
Parameters (1)
- 0. $path (string)
- Windows path to check for write-ability.
Usage
if ( !function_exists( 'win_is_writable' ) ) { require_once ABSPATH . WPINC . '/functions.php'; } // Windows path to check for write-ability. $path = ''; // NOTICE! Understand what this does before running. $result = win_is_writable($path);
Defined (1)
The function is defined in the following location(s).
- /wp-includes/functions.php
- function win_is_writable( $path ) {
- if ( $path[strlen( $path ) - 1] == '/' ) { // if it looks like a directory, check a random file within the directory
- return win_is_writable( $path . uniqid( mt_rand() ) . '.tmp');
- } elseif ( is_dir( $path ) ) { // If it's a directory (and not a file) check a random file within the directory
- return win_is_writable( $path . '/' . uniqid( mt_rand() ) . '.tmp' );
- }
- // check tmp file for read/write capabilities
- $should_delete_tmp_file = !file_exists( $path );
- $f = @fopen( $path, 'a' );
- if ( $f === false )
- return false;
- fclose( $f );
- if ( $should_delete_tmp_file )
- unlink( $path );
- return true;
- }