stat() and ampersand operator
I've 开发者_Go百科been studying WordPress source code that operates on the filesystem, when I hit these few lines and I'm really not quite sure what they do?
$stat = stat( dirname( $new_file ));
$perms = $stat['mode'] & 0000666;
@ chmod( $new_file, $perms );
That code uses bitwise operations to ensure that a file's permissions are no higher than 666. To break it down:
// Retrieves the file details, including current file permissions.
$stat = stat( dirname( $new_file ));
// The file permissions are and-ed with the octal value 0000666 to make
// sure that the file mode is no higher than 666. In other words, it locks
// the file down, making sure that current permissions are no higher than 666,
// or owner, group and world read/write.
$perms = $stat['mode'] & 0000666;
// Finally, the new permissions are set back on the file
@chmod( $new_file, $perms );
It changes the permission to allow writing in a directory.. I think. Check out stat() and chmod().
0666
is the octal notation for the unix rwxrwxrwx
permissions, so I'm assuming the $stat['mode']
returns the permissions of the folder. Then they get bitwise AND'ed with the 0666
mask to check if you have at least read/write/execute permissions for self, group and others.
精彩评论