温馨提示×

Ubuntu下PHP权限怎么设

小樊
42
2026-08-12 09:13:09
栏目: 编程语言

在 Ubuntu 下设置 PHP 相关权限,关键取决于你是跑哪种方式(Apache / Nginx + PHP-FPM),以及你要解决的是写文件、上传、执行还是访问权限。下面给你一套常见、标准、安全的做法。


一、先搞清楚 PHP 是用谁在运行

1️⃣ Apache(mod_phpphp-fpm

ps aux | grep apache

一般是:

  • 用户:www-data
  • 组:www-data

2️⃣ Nginx + PHP-FPM

ps aux | grep php-fpm

通常也是:

  • 用户:www-data
  • 组:www-data

结论:在 Ubuntu 上,PHP 几乎默认就是 www-data


二、最常用:网站目录权限(推荐做法)

假设你的网站目录是:

/var/www/html

✅ 推荐权限设置(安全 + 实用)

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

这样:

  • PHP 可以读取
  • 需要写文件的目录再单独处理

三、需要 PHP 写文件的目录(上传 / 缓存 / 日志)

例如:

  • 上传目录
  • runtime / cache
  • storage(Laravel)

✅ 正确做法

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

或者更严格一点:

sudo chmod -R 755 /var/www/html/uploads

❌ 不建议直接 777,不安全


四、如果你不想改目录属主(开发环境常用)

例如你用你的用户开发,又想 PHP 能写:

sudo usermod -aG www-data 你的用户名
sudo chown -R 你的用户名:www-data /var/www/html
sudo chmod -R 775 /var/www/html

然后重新登录或:

newgrp www-data

五、临时目录 / 上传权限问题

PHP 上传临时目录:

/var/www/html/tmp

或系统:

/tmp

检查:

php -i | grep upload_tmp_dir

确保 www-data 有写权限。


六、Laravel / ThinkPHP 常见权限

Laravel

sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache

ThinkPHP

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

七、常见错误 & 排查

❌ 页面 403

  • 目录没有执行权限
  • 父目录不是 755

❌ 上传失败 / 写文件失败

ls -ld 目录

确认:

  • 属主
  • 是否有 w 权限

❌ PHP 执行 shell 被禁

检查:

php -i | grep disable_functions

八、安全建议(很重要)

✅ 不要:

  • 整个项目 777
  • root 跑 PHP

✅ 推荐:

  • 目录:755
  • 文件:644
  • 可写目录:775
  • 用户:www-data

九、快速总结(直接抄)

# 基本设置
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

# 可写目录
sudo chmod -R 775 /var/www/html/uploads

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

  • ✅ Apache 还是 Nginx?
  • ✅ PHP 版本
  • ✅ 是上传失败 / 写日志失败 / 还是 403?

我可以给你精确到命令级别的方案。

0