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

我从来没有过这种方法的任何问题,满意或您的钱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值