【发布时间】:2016-08-13 08:03:39
【问题描述】:
我有以下代码:
function makedirs($dirpath, $mode = 0775, $recursive = true) {
return is_dir($dirpath) || mkdir($dirpath, $mode, $recursive);
}
$dir = 'path/to/folder/';
makedirs($dir, 0775);
问题是:即使将 0775 或其他任何参数作为 $mode 的参数,mkdir() 也会创建 0755 许可文件夹。
例如预览代码将返回:
- 路径/ (0755)
- 到/ (0755)
- 文件夹/ (0755)
【问题讨论】:
-
检查 umask 值。您可以在 shell 中输入 umask 以找出掩码值。我猜你的 umask 值是 022
-
$dir = 'path/to/folder/' makedirs($dir, 0775)如果这是您真正使用的,那是不完整的。如果那是伪代码,请发布正确的语法。 -
$mode = 0775由于自定义函数,前导零可能被视为八进制 btw。尝试在makedirs($dir, 0775)内部引用它和相同的内容。 -
var_dump();揭示了什么? -
@Fred-ii- 我使用的文件夹无关紧要,函数成功创建文件夹并在其中写入一些文件。问题是许可证。 (请注意,您可能希望将模式指定为八进制数,这意味着它应该有一个前导零。-php.net/manual/en/function.mkdir.php)
标签: php file-permissions chmod mkdir