WP_Filesystem_Direct::chmod
Changes filesystem permissions.
Method of the class: WP_Filesystem_Direct{}
No Hooks.
Returns
true|false. True on success, false on failure.
Usage
$WP_Filesystem_Direct = new WP_Filesystem_Direct(); $WP_Filesystem_Direct->chmod( $file, $mode, $recursive );
- $file(string) (required)
- Path to the file.
- $mode(int|false)
- The permissions as octal number, usually 0644 for files,
0755 for directories.
Default:false - $recursive(true|false)
- If set to true, changes file permissions recursively.
Default:false
Changelog
| Since 2.5.0 | Introduced. |
WP_Filesystem_Direct::chmod() WP Filesystem Direct::chmod code WP 7.0
public function chmod( $file, $mode = false, $recursive = false ) {
if ( ! $mode ) {
if ( $this->is_file( $file ) ) {
$mode = FS_CHMOD_FILE;
} elseif ( $this->is_dir( $file ) ) {
$mode = FS_CHMOD_DIR;
} else {
return false;
}
}
if ( ! $recursive || ! $this->is_dir( $file ) ) {
$current_mode = fileperms( $file ) & 0777 | 0644;
/*
* fileperms() populates the stat cache, so have to clear it
* to maintain parity with the previous behavior.
*/
clearstatcache( true, $file );
/*
* Avoid calling chmod() if the requested mode is already set,
* to prevent throwing a warning when we aren't the owner.
*/
if ( $current_mode === $mode ) {
return true;
}
return chmod( $file, $mode );
}
// Is a directory, and we want recursive.
$file = trailingslashit( $file );
$filelist = $this->dirlist( $file );
foreach ( (array) $filelist as $filename => $filemeta ) {
$this->chmod( $file . $filename, $mode, $recursive );
}
return true;
}