使用容器化的 php-fpm 的文件读写权限问题

手头有两个站点,在服务器上通过 nginx 对外服务,nginx 转发 php 请求给基于 php-fpm 容器。在如下架构下部署了 wordpress 站点。站点能运行,但涉及写文件的时候(譬如上传图片)则会报错。

一开始以为是 nginx 权限问题,查了 nginx 运行在用户 nginx 之下,因此尝试对网站文件夹给予 nginx 用户读写权限,但没解决问题。

后来知道了是 php-fpm 容器使用了 www-data 用户,因此对网站文件给予 www-data 用户读写权限就行了,譬如运行: chown -R www-data:www-data ./wordpress-website/

此操作有一个注意事项,即是多半在 host 系统中没有 www-data 用户,只在 php-fpm 容器中有,因此需要先进入 php-fpm 容器命令行,然后做以上操作。