在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] 举报,一经查实,本站将立刻删除。