zoukankan      html  css  js  c++  java
  • php中mkdir()函数的权限问题(转)

    问题描述:

    使用以下php代码创建了一个目录,期望目录的权限是0777,实际结果是0755

    [php] view plaincopy
     
    1. mkdir('./aa/',0777);  

    分析与测试结果:

    1.mkdir()函数指定的目录权限只能小于等于系统umask设定的默认权限。

    如linux默认的umask一般0022, 即创建目录的默认权限是0755, 所以这时php  mkdir('./aa/',0777) 得到目录的权限是0755.

    [plain] view plaincopy
     
    1. xw@xw-X201:~/Desktop/dd/aa$ umask  
    2. 0022  
    3. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw/',0777);"  
    4. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw1/',0755);"  
    5. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/',0747);"  
    6. xw@xw-X201:~/Desktop/dd/aa$ ll  
    7. 总用量 20  
    8. drwxrwxrwx 5 xw xw 4096 2012-06-01 11:58 ./  
    9. drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../  
    10. drwxr-xr-x 2 xw xw 4096 2012-06-01 11:57 xw/  
    11. drwxr-xr-x 2 xw xw 4096 2012-06-01 11:58 xw1/  
    12. drwxr--r-x 2 xw xw 4096 2012-06-01 11:58 xw2/  

    把系统默认权限改为777,mkdir()可以指定更大权限了

    [html] view plaincopy
     
    1. xw@xw-X201:~/Desktop/dd/aa$ umask 000  
    2. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/',0777);"  
    3. xw@xw-X201:~/Desktop/dd/aa$ ll  
    4. 总用量 12  
    5. drwxrwxrwx 3 xw xw 4096 2012-06-01 12:08 ./  
    6. drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../  
    7. drwxrwxrwx 2 xw xw 4096 2012-06-01 12:08 xw2/  

    2.chmod()函数不受系统umask影响,可以设置比系统默认权限大的权限。

    [plain] view plaincopy
     
    1. xw@xw-X201:~/Desktop/dd/aa$ umask  
    2. 0022  
    3. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw1/',0777);"  
    4. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/');"  
    5. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw3/');chmod('./xw3/',0777);"  
    6. xw@xw-X201:~/Desktop/dd/aa$ ll  
    7. 总用量 20  
    8. drwxrwxrwx 5 xw xw 4096 2012-06-01 12:12 ./  
    9. drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../  
    10. drwxr-xr-x 2 xw xw 4096 2012-06-01 12:11 xw1/  
    11. drwxr-xr-x 2 xw xw 4096 2012-06-01 12:11 xw2/  
    12. drwxrwxrwx 2 xw xw 4096 2012-06-01 12:12 xw3/  


    3.系统的mkdir命令可以设置大于默认值的权限。

    [plain] view plaincopy
     
    1. xw@xw-X201:~/Desktop/dd/aa$ umask  
    2. 0022  
    3. xw@xw-X201:~/Desktop/dd/aa$ mkdir -m0777 xw  
    4. xw@xw-X201:~/Desktop/dd/aa$ ll  
    5. 总用量 12  
    6. drwxrwxrwx 3 xw xw 4096 2012-06-01 12:18 ./  
    7. drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../  
    8. drwxrwxrwx 2 xw xw 4096 2012-06-01 12:18 xw/  

    总结:

    php若要创建一个有读写权限的目录,最好使用以下代码,不要直接使用mkdir函数指定权限,以避免系统umask的影响

    [php] view plaincopy
     
    1. mkdir('./xw/');  
    2. chmod('./xw/',0777);  



    参考文章:

    LINUX UMASK详解

     PHP用mkdir()新建立目录无写的权限的问题

    原文:http://blog.csdn.net/tsxw24/article/details/7622832

  • 相关阅读:
    System.BadImageFormatException: Could not load file or assembly
    MSSQL数据库索引的应用
    快递api网接口快递调用方法
    winform的扩展的带有截图功能picturebox
    免费api大全
    C#使用百度API通过IP获取地理位置和坐标
    用淘宝ip地址库查ip
    开源相关社区/项目一览(备查,欢迎补充)(转)
    .NET系列文章——近一年文章分类整理,方便各位博友们查询学习(转)
    设计模式--状态模式C++实现
  • 原文地址:https://www.cnblogs.com/lygsbbs/p/4341716.html
Copyright © 2011-2022 走看看