在 Ubuntu 下配置 PHP-FPM 的用户权限,核心就是修改 PHP-FPM 池(pool)配置 中的运行用户和组,并确保 网站目录权限匹配。下面按常见场景一步步说明。
Ubuntu 中 PHP-FPM 默认用户通常是:
www-data:www-data
这是 Web 服务器(Nginx / Apache)和 PHP-FPM 推荐的统一用户。
PHP-FPM 的池配置文件一般在:
ls /etc/php/*/fpm/pool.d/
常见文件:
www.conf
编辑对应的 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
✅ 推荐:
www-data假设你的网站目录是:
/var/www/html
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
sudo chmod -R 775 /var/www/html/storage
sudo chown -R www-data:www-data /var/www/html/storage
ps aux | grep nginx
确认 worker 进程是:
www-data
如果不是(很少见),检查:
/etc/nginx/nginx.conf
user www-data;
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
原因:
解决:
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 池用户(高级用法)
[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
如果你愿意,可以告诉我:
我可以给你 完全贴合你环境的配置示例。