温馨提示×

Ubuntu如何设置PHP权限

小樊
41
2026-07-28 04:16:21
栏目: 编程语言

在 Ubuntu 上设置 PHP 权限,通常是指让 PHP(通过 PHP-FPMApache mod_php)能够正确 读取 / 写入 Web 目录,同时避免因为权限过宽导致安全问题。下面按最常见场景给你一套标准做法。


一、先搞清楚 PHP 是用哪个用户运行的

1️⃣ PHP-FPM(Nginx / 新版本 Apache 常见)

ps aux | grep php-fpm

一般用户是:

  • www-data

配置文件位置:

/etc/php/8.x/fpm/pool.d/www.conf

关键配置:

user = www-data
group = www-data

这是最常见情况


2️⃣ Apache + mod_php(老方式)

PHP 以 Apache 用户运行:

  • www-data

二、Web 目录的标准权限设置(推荐)

假设你的网站目录是:

/var/www/html

✅ 推荐权限方案(最安全)

1️⃣ 设置目录所有者

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

2️⃣ 设置目录权限

sudo find /var/www/html -type d -exec chmod 755 {} \;

3️⃣ 设置文件权限

sudo find /var/www/html -type f -exec chmod 644 {} \;

✅ 说明:

  • PHP 可读可执行目录
  • PHP 可读写文件
  • 其他用户不能乱改

三、PHP 需要写入目录(如上传、缓存)

✅ 正确做法(不要 777)

假设有上传目录:

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

如果还需要某个开发用户访问:

sudo usermod -aG www-data 你的用户名

然后重新登录或:

newgrp www-data

四、绝对不推荐的做法 ❌

chmod 777 -R /var/www/html

❌ 会导致:

  • 任何用户都能改 PHP 文件
  • 极大安全风险(被挂马)

五、Nginx + PHP-FPM 常见权限问题排查

1️⃣ PHP 不能写文件

检查:

ls -ld /var/www/html
ls -ld /var/www/html/xxx

2️⃣ Nginx 报 502 / 403

sudo systemctl status php8.x-fpm
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/php8.x-fpm.log

六、快速检查清单 ✅

项目 是否正确
PHP 运行用户 www-data
Web 目录 owner www-data
目录权限 755
文件权限 644
可写目录 775
是否 777

七、如果你愿意,我可以帮你:

  • ✅ 根据你的 Nginx / Apache 精确配置
  • ✅ 针对 Laravel / ThinkPHP / WordPress 给专用权限方案
  • ✅ 排查 上传失败 / 写入失败

你可以直接贴出:

ls -l /var/www
php -v
nginx -v 或 apache2 -v

0