当前位置: 首页 > news >正文

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 

 



转载于:https://www.cnblogs.com/hanshuai0921/p/7011336.html

相关文章:

  • 脑残的MSN 9 卸载程序
  • lvs之 lvs原理架构介绍
  • 《ANSYS Workbench有限元分析实例详解(静力学)》——导读
  • SQLite.Interop.DLL与System.Data.SQLite.dll比较
  • 陈松松:我是如何制定每一天的视频营销计划
  • 初学着可以看看
  • kong k8s 安装 以及可视化管理界面
  • HttpContext.Cache和HttpRuntime.Cache(转)
  • selenium2获取input输入框中的值的三种方法。
  • win2003建立FTP的方法
  • JAVA 環境的配置
  • C# Owin初探 概念理解(一)
  • 好强大的车牌号啊
  • 对spring默认的单列模式的理解
  • [转]再读此文,作何感想?《荀子.劝学》
  • 深入了解以太坊
  • 【译】JS基础算法脚本:字符串结尾
  • 2017-08-04 前端日报
  • 2017-09-12 前端日报
  • codis proxy处理流程
  • echarts花样作死的坑
  • eclipse(luna)创建web工程
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ES6简单总结(搭配简单的讲解和小案例)
  • Hibernate【inverse和cascade属性】知识要点
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript 基本功--面试宝典
  • Sequelize 中文文档 v4 - Getting started - 入门
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 跨域
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 深度解析利用ES6进行Promise封装总结
  • 什么是Javascript函数节流?
  • 使用putty远程连接linux
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 一、python与pycharm的安装
  • 移动端解决方案学习记录
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 树莓派用上kodexplorer也能玩成私有网盘
  • # Java NIO(一)FileChannel
  • #QT(串口助手-界面)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (附源码)计算机毕业设计ssm电影分享网站
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (四)Android布局类型(线性布局LinearLayout)
  • (一)RocketMQ初步认识
  • *Django中的Ajax 纯js的书写样式1
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。