今天升级 WordPress 的时候,发现一直失败,显示无法创建目录。开始以为是单纯的文件系统配置错误。在排查了各种权限问题,SElinux 是否配置正确等之后,发现问题依然得不到解决。故怀疑是不是执行 php 代码过程中的问题,通过查询资料发现:
Nginx 调用 php 的工作原理是: Nginx 充当 Web 服务器,处理客户端请求;php-fpm 负责 PHP 代码的执行,并提供进程管理功能。两者通过FastCGI 协议协同工作,实现了动态网页的生成。
这就说明,执行 php 代码的并不是 Nginx 本身,而是 php-fpm,Nginx 只是充当一个类似反向代理的作用,将请求以 FastCGI 协议发给我iphp-fpm而已。 所以 php-fpm 也需要有对文件系统的访问权限。
Rocky Linux 下,php-fpm 的配置文件在:/etc/php-fpm.d/www.conf 里面。打开发现,php-fpm 的默认用户为 apache,组也为 apache,故无论如何修改nginx的权限,php-fpm都不会受到影响。将其改为和 Nginx 相同的用户和组(nginx:nginx),问题解决。
时隔将近4年竟为了这么点小事情更新博客……