温馨提示×

ubuntu php-fpm怎么设置用户组

小樊
41
2026-09-13 10:14:26
栏目: 编程语言

在 Ubuntu 下,php-fpm 的用户和用户组是通过 php-fpm 的 pool 配置来设置的,而不是在 php.ini 里。

下面一步一步说明。


一、找到 php-fpm 配置位置

不同 PHP 版本路径略有不同,例如:

  • PHP 7.4:/etc/php/7.4/fpm/
  • PHP 8.1:/etc/php/8.1/fpm/
  • PHP 8.2:/etc/php/8.2/fpm/

pool 配置文件通常在:

/etc/php/{版本}/fpm/pool.d/www.conf

二、修改用户和用户组

编辑 www.conf:

sudo nano /etc/php/8.1/fpm/pool.d/www.conf

找到这两行(默认一般是):

user = www-data
group = www-data

改成你需要的用户和组,例如:

user = youruser
group = yourgroup

⚠️ 注意:

  • 用户和组必须 真实存在于系统中
  • 通常 Web 服务(nginx/apache)也要对应调整,否则会出现权限问题

三、确认用户和组存在

查看用户:

id youruser

查看组:

getent group yourgroup

不存在就创建:

sudo groupadd yourgroup
sudo useradd -g yourgroup youruser

四、重启 php-fpm

修改配置后必须重启:

sudo systemctl restart php8.1-fpm

查看状态:

sudo systemctl status php8.1-fpm

五、和 Nginx / Apache 配合(重要)

Nginx 示例

Nginx 默认用户也是 www-data,如果 php-fpm 改成别的用户,Nginx 也要能访问 socket:

fastcgi_pass unix:/run/php/php8.1-fpm.sock;

确保 socket 权限:

ls -l /run/php/

目录权限

你的网站目录要属于 php-fpm 用户组:

sudo chown -R youruser:yourgroup /var/www/html

六、验证是否生效

新建测试文件:

<?php
echo posix_getuid() . ':' . posix_getuid() . PHP_EOL;
echo exec('id');

访问页面,看输出的用户是不是你设置的。


如果你愿意,可以告诉我:

  • 你用的是 Nginx 还是 Apache
  • PHP 版本
  • 想解决的具体问题(502?权限拒绝?)

我可以给你更精确的配置。

0 踩