在 Ubuntu 下,php-fpm 的用户和用户组是通过 php-fpm 的 pool 配置来设置的,而不是在 php.ini 里。
下面一步一步说明。
不同 PHP 版本路径略有不同,例如:
/etc/php/7.4/fpm//etc/php/8.1/fpm//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
⚠️ 注意:
查看用户:
id youruser
查看组:
getent group yourgroup
不存在就创建:
sudo groupadd yourgroup
sudo useradd -g yourgroup youruser
修改配置后必须重启:
sudo systemctl restart php8.1-fpm
查看状态:
sudo systemctl status php8.1-fpm
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');
访问页面,看输出的用户是不是你设置的。
如果你愿意,可以告诉我:
我可以给你更精确的配置。