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 


  • 相关阅读:
    C 库函数 ------ qsort()
    递归之美
    C函数库 ------ ctype.h
    scanf 多行输入判断结束
    POSIX库、glibc库、pthreads库、libc库、newlib、uClibc
    Docker 私有仓库搭建
    在daemon.json中配置主机后无法启动docker
    MySQL配置HeartBeat实现心跳监控和浮动IP
    Heartbeat基础知识-运维小结
    (二) Docker中启动镜像
  • 原文地址:https://www.cnblogs.com/hanshuai0921/p/7011336.html
Copyright © 2011-2022 走看看