FS_CHMOD_DIR和FS_CHMOD_FILE的语法

时间:2018-01-05 作者:MoritzLost

我今天遇到了一个问题,通过Wordpress后端上传的文件没有获得正确的权限。uploads目录中新的2018文件夹以及其中的文件的权限太紧,Web服务器用户甚至无法访问它们。我找到了常数FS_CHMOD_DIRFS_CHMOD_FILE 可用于覆盖上载文件的默认权限。这个Wordpress Codex 建议在中使用以下设置wp-config.php:

define( \'FS_CHMOD_DIR\', ( 0755 & ~ umask() ) );
define( \'FS_CHMOD_FILE\', ( 0644 & ~ umask() ) );
然而,我还没有找到关于这些常量语法的文档。权限的八进制表示法很清楚,但没有参数的符号和、swung破折号和umask命令是怎么回事?This article WP初学者也提到了这些常量,但它只提到用八进制值定义常量。这与上面的较长命令有什么区别?

1 个回复
最合适的回答,由SO网友:Nathan 整理而成

define()的基本语法是:

define ( $name, $value )
在上述定义中,值为:

( 0755 & ~ umask() )
“&;”(与号)是“And”位运算符,“~”(颚化符)是“Not”位运算符,umask()函数返回当前umask。

简而言之,为了回答您的问题(如果您有兴趣学习逐位运算,那么有大量的相关资源),上述“语法”实际上是一种操作,它从您提供的定义中减去当前的umask。

因此,例如,如果您提供0644,而当前的umask是0640,那么有效权限集将是640。你为什么或者什么时候会这样做?好吧,如果您想指定某些权限,但权限不比默认的umask更大,那么您可以这样做。

结束