开发者社区 问答 正文

关于linux下php权限问题 配置报错 

假设我的项目文件夹为www,环境:centos+nginx+php

我的设想是www设置744 然后把nginx(php)操作文件的时候使用第一个权限组(7),而不是第三个权限组(4). 就像win03环境下为文件夹添加一个用户(iis),然后PHP就可以具有权限(7).

我试着把www所有者改为nginx一样无效 chown -R nginx:nginx www
PHP操作文件的时候到底属于那个用户组?

展开
收起
kun坤 2020-05-30 23:26:58 762 分享 版权
阿里云 AI 助理回答

在Linux环境中,Nginx和PHP(尤其是使用PHP-FPM)通常以不同的用户身份运行。这种设计是为了增强安全性,通过最小权限原则来限制服务对系统资源的访问。

  1. Nginx:默认情况下,Nginx可能以nginx用户或www-data(取决于Linux发行版)运行。

  2. PHP-FPM:同样,PHP-FPM也可能配置为以www-datanginx或其他用户身份运行。这个配置可以在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的运行用户配置,以及文件和目录的权限设置,以满足你的应用需求。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答