温馨提示×

ubuntu php配置权限怎么设

小樊
50
2026-10-13 05:08:46
栏目: 编程语言

在 Ubuntu 上配置 PHP 相关权限,通常涉及 Web 服务器用户(www-data)、项目目录权限 和 PHP 自身配置。下面按常见场景说明。


一、确认 PHP 运行用户

Ubuntu 下通常是:

  • Apache:www-data
  • Nginx + PHP-FPM:www-data

查看 PHP-FPM 用户:

grep -E "user|group" /etc/php/*/fpm/pool.d/www.conf

二、项目目录权限设置(最常用)

假设项目目录是 /var/www/html/myproject

1. 修改目录所有者

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

2. 设置目录和文件权限

# 目录 755
find /var/www/html/myproject -type d -exec chmod 755 {} \;

# 文件 644
find /var/www/html/myproject -type f -exec chmod 644 {} \;

3. 可写目录(如上传、缓存)

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

三、当前用户也需要写权限(推荐做法)

如果你用普通用户部署代码:

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

这样:

  • 你可读写
  • PHP(www-data)也可读写

四、PHP 上传文件权限

php.ini 中关键配置:

file_uploads = On
upload_max_filesize = 20M
post_max_size = 20M
upload_tmp_dir = /tmp

确保 /tmp 可被 www-data 写:

ls -ld /tmp

五、SELinux / AppArmor(Ubuntu 默认 AppArmor)

一般不用关,但如果有奇怪权限问题:

sudo aa-status

六、常见错误与解决

1. 上传失败 / 权限拒绝

✅ 检查目录是否属于 www-data

2. Laravel / ThinkPHP 报权限错误

sudo chmod -R 775 storage bootstrap/cache

3. Nginx 403

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

七、安全建议

  • ❌ 不要 chmod 777
  • ✅ 用 775 + www-data 组
  • ✅ 生产环境关闭 display_errors

如果你能告诉我:

  • 用的是 Apache 还是 Nginx
  • PHP 版本
  • 具体框架(Laravel / ThinkPHP / 原生)

我可以给你精确命令。

0 踩