PHP open_basedir 授权目录设置
设置目的
PHP为了安全性考虑,有一项open_basedir的设置,该配置可以设置你访问目录的权限.根据你web服务器环境,open_basedir可以在几个地方设置.
如何配置
1.在PHP配置文件php.ini文件中配置
;open_basedir =
如果发现该项没有有配置,可以查看一下fastcgi.conf文件中是否有如下配置:
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root:/tmp/:/proc/:/project_root_path";
project_root_path
是配置PHP可访问的目录.多个配置时可以使用;隔开(记住一定是英文输入状态下的分好).
2.在自定义的.user.ini文件中配置
一般情况下是在项目的根目录下面创建该文件,文件的内容可如下配置.
open_basedir=/project_root_path:/tmp/:/proc/
project_root_path
是项目跟目录的绝对路径.
配置好之后还需要做如下操作才能使该文件生效,在php.ini文件中配置如下两个配置项
user_ini.filename=user.ini
user_ini.cache_ttl=300
配置解释 1 user_ini.filename配置的.user.ini文件名称需要和上面自定义的.user.ini文件名称一致.这样的话,就表示自定义的文件名称并非一定是.user.ini,只要该配置项和文件名称一致即可. 2.关闭掉php.ini或者fastcgi.ini中的open_basedir配置项(直接使用#即可注释).因为该两个文件中的配置项是全局配置. 2.user_ini.cache_ttl是指的配置生效时间,默认是300(单位秒).如果想立即生效可以重启php服务.
使用效果
这里以ThinkPHP5.1的框架为例.环境使用的是lnmp集成安装包下载地址.默认安装完环境,我们搭建ThinkPHP5.1之后,进行访问会提示500错误,这种情况很有可能就是public目录下面的.user.ini文件配置了open_basedir,只需要将该项注释掉并重启php服务即可进行访问了.
#open_basedir=/home/wwwroot/thinkphp51/public:/tmp/:/proc/
使用建议
就PHP而言,很多框架都实现了防跨目录访问.例如ThinkPHP3版本之后的版本,laravel框架,都将项目的入口文件进行了设置.但为了给项目增加另外一道安全的防火墙,建议添加该配置. 官网参考链接:https://www.php.net/manual/zh/configuration.file.per-user.php
- js粘贴事件paste简单解析及遇到的坑
- 学习zepto.js(对象方法)[6]
- Javascript 装饰器极速指南
- daterangepicker日历插件使用参数注意问题
- 学习zepto.js(对象方法)[5]
- js 停止事件冒泡 阻止浏览器的默认行为
- vue-cli生成的项目配置开发和生产环境不同的接口
- 【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!
- 学习zepto.js(对象方法)[4]
- 事件绑定的几种常见方式
- vue的iview列表table render函数设置DOM属性值的方法
- js焦点轮播图
- vue父组件中获取子组件中的数据
- 学习zepto.js(对象方法)[3]
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- PHP使用htmlspecialchars方法实现像ASP的Server.HTMLEncode一样的效果
- jquery.ajax()怎么把获取来的内容转为JSON,并使用。
- Spring:IOC 控制反转
- Spring:AOP 面向切面编程
- JavaScript进阶教程(5)-一文让你搞懂作用域链和闭包
- JavaScript进阶教程(6)—硬核动图让你轻松弄懂递归与深浅拷贝
- Spring:JDBC Template,声明式事务
- Spring:讲解编程题
- SpringMVC:基本应用
- SpringMVC:进阶
- SpringMVC:SSM 整合
- 12 | Tornado源码分析:BaseIOStream 对象(上)
- 数据一致性校验及数据同步,运维必看
- Windows使用scoop包管理器安装RabbitMQ
- 深入理解web协议(二):DNS、WebSocket