在 Apache 虚拟机中, php-fpm 以指定用户身份运行 PHP

佚名 / 2024-10-21 / 原文

 

用户 和 用户目录

useradd site1
usermod -a -G site1 www-data
mkdir /var/www/site1
chown -R site1:site1 /var/www/site1
chmod 770 /var/www/site1 # 限制其它用户查看 site1 数据

 

设置 php-fpm

cp /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/fpm-site1.conf
nano /etc/php/7.4/fpm/pool.d/fpm-site1.conf

 

将顶部前几行中的括号内的[www]设置池名称更改为[site1]

#以什么用户什么组的权限来运行池fpm。
更改行 user = www-data 为 user = site1
更改行 group = www-data 为 group = site1

更改行 listen = /var/run/php/php7.4-fpm.sock 为 listen = /var/run/php/php7.4-site1-fpm.sock

#拥有socket权限的用户,需要和上面的user、group配置相结合。如果采用的TCP端口的方式,则不配置。
listen.owner = www-data 为 listen.owner = site1
listen.group = www-data 为 listen.group = site1

当 listen.owner 和 listen.group 设定为默认值 www-data , 且 /var/www/site1 目录权限 770 时, 网站显示 403 无权限访问, 当设置为 site1 时 无此问题

Apache 的虚拟机中指定 php-fpm 的 sock ,也可以是 tcp

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php-fpm-client1.sock|fcgi://localhost"
</FilesMatch>