php 修改文件的权限_授予PHP写入文件和文件夹的权限
我将通过技术解决方案来完善rahmu和MV的答案。后面的所有内容仅对类似UNIX的系统有效。
滚动到chmod / chown部分,以获取使用ACL的示例-比UNIX文件模式更强大的工具。
查找您的Web服务器用户名
首先,您需要知道您的Web服务器运行所使用的用户名。如果您使用的是Apache,它可以是apache或httpd,www-data等等。在大多数的Debian类系统中,Apache是www-data。对于nginx,通常也是如此www-data。
要查看它,请尝试:
ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
确保此命令返回的用户名是一致的(例如,我99%的时间使用nginx,但是此命令返回的tomcat7是我安装一次的Java Web服务器)。
授予Web服务器权限:使用chmod和chown
使用chmod666或777(解决不良文档/教程中此类问题的理想解决方案)可以神奇地使事情正常进行,但并不安全。授予666或777权限将授予“其他”访问权限。所以,不只是Apache的,也grandmother和 nsa(前提是您的计算机上存在这些用户帐户-但没有真的,请避免这样做,除非它只是用于测试/故障排除)。
最好是更加具体,并只授予您和Apache权限。更改文件组,以将对文件的完全控制权提供给Web服务器。为此,请递归更改所有者:
chown -R www-data:www-data your/folder/
但是最有可能的是,您可能只想通过更改组来保持对文件的完全访问权限:
chown -R yourusername:www-data your/folder/
然后,执行适当的操作chmod以赋予该组www-data与您相同的权限。例如,如果当前模式为640 (您的模式为6,www-data的模式为4,其他模式的0,转换为-rw-r -----),则将其设置为660 (您的模式为6,www-data的模式为6)。数据,其他则为0,转换为-rw-rw ----)。请参阅rahmu的答案以了解有关文件模式的更多信息,这是一个古老而优雅的机制。
为了避免使用操纵奥术数chmod,您还可以使用以下语法:
chmod -R g+rw your/folder/
这意味着“向组(g),递归()添加(+)rw对文件夹的读写权限your/folder/(-R)”。
在90%的情况下,这应该足够了。
我的首选方法:使用ACL(访问控制列表)
有时第一个解决方案是不够的。我将以Symfony框架为例,该框架记录和缓存大量数据。因此,它需要对相应文件夹的写权限。
当同时在CLI(使用我的用户帐户)和Web(Web服务器用户)中使用Symfony控制台时,chmod/ chown方法可能还不够。这会导致很多问题,因为Symfony会不断修改权限。
在这种情况下,我们将使用ACL(访问控制列表),这是在许多UNIX系统上管理权限的更高级的方法。
这里由官方的Symfony文档中给定(命令,请更改app/cache和app/logs您的需要):
在支持的系统上chmod +a(即不支持Debian / Ubuntu)
sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
在不支持的系统上chmod +a(最常见)
您将需要该setfacl工具;也许默认情况下它已安装在您的系统上,所以请尝试setfacl -v查看该命令是否可用。
如果命令不可用,并且您正在使用Ubuntu 14.04+,则只需安装该工具:
sudo apt install acl
否则,请遵循您的OS文档,因为您可能需要更改分区的挂载方式(此处为Ubuntu文档)。
我们到了:
sudo setfacl -R -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
我从来没有过这种方法的任何问题,满意或您的钱。
php 修改文件的权限_授予PHP写入文件和文件夹的权限相关推荐
- python csv读取数据 去掉标题-Python读csv文件去掉一列后再写入新的文件实例
用了两种方式解决该问题,都是网上现有的解决方案. 场景说明: 有一个数据文件,以文本方式保存,现在有三列user_id,plan_id,mobile_id.目标是得到新文件只有mobile_id,pl ...
- mac设置文件权限_如何在Mac上设置文件权限
mac设置文件权限 Like all major operating systems, macOS allows you to restrict access to files using a com ...
- 上传文件白名单_十大常见web漏洞——文件上传漏洞
漏洞介绍 在我们浏览网页时,文件上传是非常常见的,比如我们会上传头像.附件.视频等文件,文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文 ...
- 在linux中的文件中查找_如何在Linux中查找文件
在linux中的文件中查找 如果您是Windows用户或OSX的非超级用户,则可能使用GUI查找文件. 您可能还会发现界面有限,令人沮丧或两者兼而有之,并且学会了精于组织事物并记住文件的确切顺序. 您 ...
- 多个python文件相互调用_用 python提取两个文件之间的内容
我有两个文件: 一个文件叫exemple_data.csv 里面包含3个id,每个id一行 ZINC04203483 ZINC26895155 ZINC03651026 一个文件叫exemple.sd ...
- python移动文件的函数_移动并重命名2000个文件,用Python,只需3秒
原标题:移动并重命名2000个文件,用Python,只需3秒 作者:陈熹.刘早起 来源:早起Python 今天介绍的案例是如何利用Python来 自动化移动.修改.重命名文件/夹,这样的操作在日常办公 ...
- oracle .dbf文件过大_学习这篇Oracle数据库文件坏块损坏的恢复方法,拓展你的知识面...
一.Oracle数据库系统简介: ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结 ...
- file对象怎样获取文件的长度?_使用FSO对象获取整个文件夹的信息
大家好,我们今日讲解"VBA信息获取与处理"教程中第十八个专题"FSO对象对文件及文件夹的处理"的第三节"使用FSO对象获取整个文件夹的信息" ...
- java控制器文件内容替换_如何用Java来进行文件切割和简单的内容过滤的实现
一 由来 去年由于项目的需求,要将一个任意一个文件制作成一个xml文件,并且需要保持文件内容本身不产生变化,还要能够将这个xml重新还原为原文件.如果小型的文件还好处理,大型的xml,比如几个G的文件 ...
- java mf文件怎么打开_安卓手机如何打开.MF文件?
01 MF文件是JAR游戏里面的文件,先解压出JAR文件,.MF直接文本打开就行了,非智能可以用MiniCommander(UTF-8编码打开).JAR文件是一种归档文件,以ZIP格式构建,以.jar ...
最新文章
- 软件架构是软件的组织形式
- 关于学习Python的一点学习总结(28->收集参数及分配参数)
- VeriSign SSL证书apache安装
- Oracle数据库教程(Oracle备份、恢复、升级、迁移)视频教程
- HNU 11720 God Created The Integers
- 几种机器学习算法的优缺点
- java ee jstl_Java EE之JSTL(下)
- jquery弹出框样式大全_jQuery中w2ui是什么?-前端问答
- 比特币白皮书 Bitcoin: A Peer-to-Peer Electronic Cash System
- 不要小看日本的AI公司
- Template-Based 3D Model Fitting Using Dual-Domain Relaxation
- six.move 的作用
- 机器学习与数据挖掘学习之路
- CodeForces 760B	Frodo and pillows
- 移动直播技术秒开优化经验
- matlab隐函数显化,怎么把隐函数显化
- 游戏本地文件乱码问题
- MySQL 完全备份 + 增量备份+完全恢复
- mini6410移植全攻略(5)--uboot移植之支持nand flansh启动(下)
- shell几个基础问题(基础进阶)