PHP中的mkdir()函数将文件夹权限设置为755,但我需要777?

12

我正在尝试使用PHP在我的服务器上创建一个文件夹,当我将其设置为0777时,结果变成了755?

mkdir($create_path, 0777);

非常感谢

4个回答

26

试试这个:

$old_umask = umask(0);
mkdir($create_path, 0777);
umask($old_umask);

http://php.net/umask


为什么要设置 $old_umask = umask(0); 然后再 umask($old_umask);?因为在顶部设置一次就足够了,为什么最后还要再设置一次呢? - Airy
@Airy 这是一个老问题,但供参考 - 来自文档:umask() 函数将 PHP 的 umask 设置为 mask & 0777,并返回旧的 umask。当 PHP 作为服务器模块使用时,每个请求完成后都会恢复 umask。
  • 这意味着通过这种方式可以将 umask 重置为其原始状态。
- Toon Van Dooren

6

这对我真的很有效!你应该现在关闭这个问题!

  1. Create the directory!
  2. Give 777 permissions!

    $estructure = '../files/folderName';
    
    if(!mkdir($estructure, 0777, true)){
        echo "<br/><br/>ERROR: Fail to create the folder...<br/><br/>"; 
    }  else echo "<br/><br/>!! Folder Created...<br/><br/>";
    
    chmod($estructure, 0777);
    
  3. Enjoy it!


2
另外,mkdir() 的第二个参数不会递归应用。所以,您需要在之后使用 chmod() 更改权限。 - Kamiccolo

3

试试这个:

<?php
// files will create as -rw-------
umask(0);
// create a file, eg fopen()

chmod('/path/to/directory', 0777);
?>

参考文献


你应该将它重置回先前的值,否则可能会发生奇怪的事情。 - jwueller

0
该进程的umask值设置为0022。如果您想创建具有这两个写位设置的内容,您需要将其设置为0。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接