在 Ubuntu 上设置 PHP 权限,通常是为了解决 网站无法写入文件、上传失败、mkdir 无权限、Permission denied 等问题。下面按最常见场景给你一个完整、实用的说明。
ps aux | grep apache
通常是:
www-data
ps aux | grep php-fpm
也是:
www-data
✅ 结论:Ubuntu 下 PHP 默认运行用户是 www-data
/var/www/html/
├── index.php
├── upload/
├── cache/
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
说明:
755:目录可读、可进入644:文件默认可读✅ 只给需要写的目录写权限
sudo chown -R www-data:www-data /var/www/html/upload
sudo chmod -R 775 /var/www/html/upload
如果还是不行:
sudo chmod -R 777 /var/www/html/upload
⚠️ 不推荐长期使用 777,仅用于排查问题
find /var/www/html -type f -exec chmod 644 {} \;
Warning: move_uploaded_file(): Permission denied
✅ 解决:
sudo chown -R www-data:www-data 目录
sudo chmod -R 775 目录
mkdir("upload/2026");
✅ 解决:
sudo chown -R www-data:www-data upload
检查 PHP-FPM 用户:
cat /etc/php/*/fpm/pool.d/www.conf | grep user
确保是:
user = www-data
group = www-data
然后重启:
sudo systemctl restart php8.2-fpm
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
sudo chmod -R 775 /var/www/html/upload
✅ 不要整个网站 777 ✅ 不要把 PHP 文件 owner 设为 root ✅ 只给上传/缓存目录写权限 ✅ 生产环境禁止 PHP 写 PHP 文件
# 当前 PHP 运行用户
ps aux | grep php
# 查看目录权限
ls -ld 目录
# 查看文件权限
ls -l 文件
如果你愿意,可以告诉我:
我可以给你 精确到命令级别 的设置方案。