假设我的项目文件夹为www,环境:centos+nginx+php
我的设想是www设置744 然后把nginx(php)操作文件的时候使用第一个权限组(7),而不是第三个权限组(4). 就像win03环境下为文件夹添加一个用户(iis),然后PHP就可以具有权限(7).
我试着把www所有者改为nginx一样无效 chown -R nginx:nginx www
PHP操作文件的时候到底属于那个用户组?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Linux环境中,Nginx和PHP(尤其是使用PHP-FPM)通常以不同的用户身份运行。这种设计是为了增强安全性,通过最小权限原则来限制服务对系统资源的访问。
Nginx:默认情况下,Nginx可能以nginx
用户或www-data
(取决于Linux发行版)运行。
PHP-FPM:同样,PHP-FPM也可能配置为以www-data
、nginx
或其他用户身份运行。这个配置可以在PHP-FPM的配置文件中找到,通常是/etc/php-fpm.d/www.conf
或者/etc/php/7.x/fpm/pool.d/www.conf
(这里的7.x代表你的PHP版本)。你需要查找以下行来确认:
user = nginx # 或者是其他用户,比如 www-data
group = nginx # 同上
根据你的描述,你希望Nginx和PHP能够读写项目文件夹。为了实现这一点,你可以采取以下步骤:
更改文件夹所有者:首先,确保你的项目文件夹的所有权被设置为与Nginx或PHP-FPM运行的用户相匹配。如果PHP-FPM以nginx
用户运行,那么你已经做了正确的操作:
chown -R nginx:nginx /path/to/www
设置合适的权限:然后,设置适当的权限。你提到的744(即rwxr--r--
)可能过于严格,因为这将阻止除所有者外的任何用户进行写入操作。如果你希望PHP-FPM也能写入文件,可以考虑更宽松的权限,如755(rwxr-xr-x
),但请注意,这会给予所有用户执行权限。对于需要保护的数据或代码,建议保持更高的安全标准,并仅在必要时放宽权限。
理解权限组:在Linux中,权限分为三组——所有者、所属组和其他用户。当你设置权限为744时,第一个数字“7”确实指的是所有者的权限(读、写、执行),而第三个数字“4”指的是其他用户的权限(只读)。第二个数字“4”指所属组的权限,也是只读。因此,如果PHP-FPM和Nginx运行在同一个用户下,且该用户是文件的所有者,它们都将拥有读、写、执行权限。
调整PHP-FPM配置:如果Nginx和PHP-FPM运行在不同用户下,且需要共享文件访问,考虑创建一个共同的用户组,将两个服务都加入到这个组内,并相应地设置文件夹的所属组及权限。
综上所述,要让PHP正确操作文件,你需要确保PHP-FPM进程的用户或用户组对文件有适当的访问权限。检查并调整PHP-FPM的运行用户配置,以及文件和目录的权限设置,以满足你的应用需求。