温馨提示×

ubuntu php-fpm怎样设置用户权限

小樊
39
2026-07-01 00:12:35
栏目: 编程语言

在 Ubuntu 下配置 PHP-FPM 的用户权限,核心就是修改 PHP-FPM 池(pool)配置 中的运行用户和组,并确保 网站目录权限匹配。下面按常见场景一步步说明。


一、PHP-FPM 默认用户

Ubuntu 中 PHP-FPM 默认用户通常是:

www-data:www-data

这是 Web 服务器(Nginx / Apache)和 PHP-FPM 推荐的统一用户


二、查看 PHP-FPM 使用的池配置

PHP-FPM 的池配置文件一般在:

PHP 7.x / 8.x

ls /etc/php/*/fpm/pool.d/

常见文件:

www.conf

三、修改 PHP-FPM 运行用户(推荐方式)

编辑对应的 pool 文件:

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

(把 8.2 换成你的 PHP 版本)

找到并修改:

user = www-data
group = www-data

listen.owner = www-data
listen.group = www-data

推荐

  • Web 服务器是 Nginx / Apache
  • PHP-FPM 也用 www-data
  • 避免权限混乱

四、网站目录权限设置(非常重要)

假设你的网站目录是:

/var/www/html

1️⃣ 设置目录所有者

sudo chown -R www-data:www-data /var/www/html

2️⃣ 设置目录权限

sudo chmod -R 755 /var/www/html

3️⃣ 如果站点需要写文件(如上传)

sudo chmod -R 775 /var/www/html/storage
sudo chown -R www-data:www-data /var/www/html/storage

五、Nginx 场景(最常见)

Nginx 也需要是 www-data

ps aux | grep nginx

确认 worker 进程是:

www-data

如果不是(很少见),检查:

/etc/nginx/nginx.conf
user www-data;

六、修改 PHP-FPM 监听方式(sock 权限)

使用 sock(推荐)

listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

重启 PHP-FPM:

sudo systemctl restart php8.2-fpm

七、常见错误 & 排查

❌ 502 Bad Gateway

原因:

  • sock 权限不对
  • Nginx 用户无法访问 PHP-FPM sock

解决:

ls -l /run/php/php8.2-fpm.sock

确保:

srw-rw---- www-data www-data

❌ 上传文件失败 / 写入失败

原因:

  • 目录不是 www-data
  • 目录权限不足

解决:

sudo chown -R www-data:www-data upload_dir
sudo chmod -R 775 upload_dir

八、安全建议(生产环境)

不要root 运行 PHP-FPM
不要 给 777 权限
✅ 不同站点可用不同 PHP-FPM 池用户(高级用法)


九、示例:一个站点一个 PHP-FPM 用户(进阶)

[site1]
user = site1
group = site1
listen = /run/php/site1.sock
listen.owner = www-data
listen.group = www-data

十、总结(最常用配置)

user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
sudo chown -R www-data:www-data /var/www/html
sudo systemctl restart php8.2-fpm

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

  • ✅ Nginx 还是 Apache?
  • ✅ Ubuntu 版本
  • ✅ PHP 版本
  • ✅ 是否多站点

我可以给你 完全贴合你环境的配置示例

0