• 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

  • 相关阅读:
    Python使用QRCode模块生成二维码
    C++ STL中允许重复key的multimap
    C++ STL中Map的按Value排序
    C++ STL中Map的按Key排序
    C++ String和其他类型互换
    android studio
    加快android studio 编译速度(已更新至Android Studio 3.3.1)
    解决Installation failed with message Failed to finalize session : INSTALL_FAILED_INVALID_APK的问题
    Android 自定义Dialog 去除阴影
    FFmpeg(14)-使用NDK、C++完成EGL,display, surface, context的配置和初始化
  • 原文地址:https://www.cnblogs.com/lygsbbs/p/4341716.html
Copyright © 2020-2023  润新知