permissions – 授予PHP写入文件和文件夹的权限

更新进一步的清晰度:

根据http://expressionengine.com/user_guide/installation/installation.html,它说:

For most Unix hosts the following is typical, but you may check with your host to see if more restrictive permissions can be used to allow PHP to write to files (666) and folders (777). On Windows servers the following will not apply, but you will need to ensure that the files and folders are writable by ExpressionEngine. You may need to contact your host for this.

不确定这意味着什么.我可以将特定的文件文件夹分别更改为666和777,其中我是chown’er,但上面的声音听起来像我需要允许PHP这样做?

原始问题:

我需要确保PHP可以写入特定文件(666)和文件夹(777).

我该怎么做呢?

解决方法:

编辑:哎呀,对不起,我没有看到这个话题很老.哦,它可以帮助其他人..

我将用技术解决方案完成rahmu和MV的答案.

查找Web服务器用户名

首先,您需要知道Web服务器运行时的用户名.
如果您使用的是Apache,它可以是apache或httpd,www-data等.在大多数类似Debian的系统上,Apache都是www-data.

要查看它,请尝试:

ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1

确保此命令返回的用户名是一致的(例如,我使用Apache 99%的时间,但此命令返回tomcat7).

授予Web服务器权限(chmod,chown)

一个666或777的chmod就足够了,但是不安全.
授予666或777权限将允许访问“其他人”.所以不仅仅是Apache,还有你的祖母和国家安全局.

最好是更准确地给予你和Apache的权限,但不是我们的祖母.更改文件组以完全控制文件到Web服务器.为此,请递归更改所有者:

chown -R www-data:www-data /folder/used/by/EE

或者,您可以通过仅更改组来保持对文件的完全访问权限:

chown -R yourusername:www-data /folder/used/by/EE

然后,使用适当的chmod为组www-data提供与您相同的权限.例如,如果实际模式为640,则将其设置为660.有关更多说明,请参阅rahmu的答案.

授予Web服务器(ACL)权限

有时第一种解决方案是不够的.
我将以Symfony Framework为例记录并缓存大量数据.因此它需要对相应文件夹的写访问权限.

当您在CLI(在我的用户帐户下)和Web(Web服务器用户)并行使用Symfony控制台时,chmod / chown方法可能还不够,这会导致很多问题,因为Symfony会不断修改权限.

在这种情况下,我们将使用ACL(访问控制列表),这是一种更高级的方法来管理权限.

这里是官方Symfony文档提供的命令(请根据您的需要调整app / cache和app / logs):

支持chmod a的系统上

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工具,认情况下它可能已安装在您的系统上.否则,请遵循Ubuntu documentation.

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...