微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nginx + php-fpm文件写入权限问题

在CentOS服务器上部署一个wordpress应用,以Nginx作为Web服务器。为了使wordpress文件上传和更新功能正常,干脆直接将整个wordpress目录的所有者设为Nginx用户wordpress已对所有者配置好了写权限),而不是给other用户添加权限。

Nginx启动后,执行ps -ef | grep Nginx,看到:

root        2462       1  0 21:39 ?        00:00:00 Nginx: master process /usr/sbin/Nginx
Nginx       2463    2462  0 21:39 ?        00:00:00 Nginx: worker process
Nginx       2464    2462  0 21:39 ?        00:00:00 Nginx: worker process

说明Nginx访问文件时使用的用户Nginx(Worker进程)。那么对wordpress目录执行:

chown -R Nginx:Nginx wordpress/

尝试上传文件,却发现仍然不能写入

尝试给wordpress/wp-content/的other用户添加写权限,发现能正常写入了,说明wordpress在写文件时使用的用户并不是Nginx用户Nginx。想到wordpress一个PHP应用,Nginx通过PHP-fpm来执行PHP脚本,而PHP-fpm又是以服务的形式在运行,因此猜想是因为执行写入时PHP-fpm使用的用户不是Nginx

执行ps -ef | grep PHP,看到:

root         707       1  0 19:16 ?        00:00:00 PHP-fpm: master process (/etc/PHP-fpm.conf)
apache       790     707  0 19:16 ?        00:00:00 PHP-fpm: pool www
apache       791     707  0 19:16 ?        00:00:00 PHP-fpm: pool www
apache       793     707  0 19:16 ?        00:00:00 PHP-fpm: pool www
apache      2175     707  0 21:22 ?        00:00:00 PHP-fpm: pool www
apache      2230     707  0 21:25 ?        00:00:00 PHP-fpm: pool www
apache      2235     707  0 21:25 ?        00:00:00 PHP-fpm: pool www

说明PHP写入文件时使用的用户apache。那么对wordpress目录执行:

chown -R apache:apache wordpress/

尝试上传,发现写入正常了

之前是在Ubuntu系统上测试这种方法Nginx用户www-data,没有遇到这个问题,应该是PHP-fpm也使用了同样的用户,但在CentOS这里却是不同的用户,因而有此问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐