zoukankan      html  css  js  c++  java
  • open_basedir php文件包含目录配置

    open_basedir将PHP所能打开的文件限定在制定的目录树中,包括其文件本身,当使用这些fopen,file_put_contents()打开一个文件,这个文件的文件的位置会被检查,如果文件在其指定的目录树之外,程序将会被拒绝打开。

    错误如下:

    Warning: file_get_contents(): open_basedir restriction in effect. File(../test.txt) is not within the allowed path(s): (/home/fdipzone/sites/in.fdipzone.com/) in /home/fdipzone/sites/in.fdipzone.com/index.php on line 3

    通过查看crontab定时命令(grep 'index.php' /var/log/cron)

    un 14 21:14:01 bogon CROND[4542]: (han) CMD (/home/wwwroot/index.php)
    Jun 14 21:14:01 bogon CROND[4541]: (han) CMDOUT (/bin/sh: /home/wwwroot/index.php: 权限不够)
    Jun 14 21:16:01 bogon CROND[4659]: (han) CMD (/home/wwwroot/index.php)
    Jun 14 21:16:01 bogon CROND[4658]: (han) CMDOUT (/bin/sh: /home/wwwroot/index.php: 权限不够)
    Jun 14 21:18:01 bogon CROND[4711]: (han) CMD (/home/wwwroot/index.php)

     open_basedir限定的其实是前缀而不是目录,也就是说“open_basedir = /dir/incl”也会允许访问“/dir/include”和“/dir/incls”,如果它们存在的话。
    如果要将访问限制在仅为指定的目录,用斜线结束路径名。例如:“open_basedir = /dir/incl/”。)

    接下来总结下, 可以有几种方式设置限制包含目录
    
    1)php.ini open_basedir = /home/wwwroot/
    2)ini_set 注意:PHP >5.2.3+ PHP_INI_ALL ,不建议使用,这么设置太随意了。
    3)apache 的 httpd.conf 中Directory配置
    
    "php_admin_value open_basedir none" #关闭 
    php_admin_value open_basedir "/home/wwwroot/:/tmp/:/var/tmp/:/proc/"
    
    httpd.conf中VirtualHost
    
    php_admin_value open_basedir "/home/wwwroot/:/tmp/:/var/tmp/:/proc/"
    
    4)nginx fastcgi.conf
    fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/";
    
    5).user.ini 文件
    设置方法同 1 .
    [root@bogon default]# cat .user.ini 
    open_basedir=/home/wwwroot/default:/tmp/:/proc/

    drwxrwxrwx.  3 han  www    138 6月  14 23:41 .
    drwxrwxrwx.  3 han  root    38 6月  14 21:43 ..
    -rwxrwxrwx.  1 han  root  2781 6月  11 21:27 index.html
    -rwxrwxrwx.  1 han  root  5683 6月  11 21:27 lnmp.gif
    -rwxrwxrwx.  1 han  root 20256 6月  11 21:27 ocp.php
    -rwxrwxrwx.  1 han  root    20 6月  11 21:27 phpinfo.php
    drwxrwxrwx. 14 han  www   4096 6月  11 21:27 phpmyadmin
    -rwxrwxrwx.  1 han  root 42609 6月  11 21:27 p.php
    -rw-rw-r--   1 han  han     67 6月  14 21:52 test.php
    -rw-r--r--.  1 root root    48 6月  11 21:27 .user.ini

    此时给文件赋不上权限的,chmod -R 777 是无效的

    [root@bogon wwwroot]# chmod -R 777 default/
    chmod: 更改"default/.user.ini" 的权限: 不允许的操作
    [root@bogon wwwroot]#    


    因为文件被锁定,所以要解除锁定,在删除
    [root@bogon default]# rm .user.ini 
    rm:是否删除普通文件 ".user.ini"?y
    rm: 无法删除".user.ini": 不允许的操作
    [root@bogon default]# chattr -i /home/wwwroot/default/.user.ini 


  • 相关阅读:
    apache安全—用户访问控制
    hdu 3232 Crossing Rivers 过河(数学期望)
    HDU 5418 Victor and World (可重复走的TSP问题,状压dp)
    UVA 11020 Efficient Solutions (BST,Splay树)
    UVA 11922 Permutation Transformer (Splay树)
    HYSBZ 1208 宠物收养所 (Splay树)
    HYSBZ 1503 郁闷的出纳员 (Splay树)
    HDU 5416 CRB and Tree (技巧)
    HDU 5414 CRB and String (字符串,模拟)
    HDU 5410 CRB and His Birthday (01背包,完全背包,混合)
  • 原文地址:https://www.cnblogs.com/hanshuai0921/p/7011336.html
Copyright © 2011-2022 走看看