温馨提示×

ubuntu php权限怎么设置

小樊
48
2026-10-16 03:36:28
栏目: 编程语言

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


一、确认 PHP 运行用户

Ubuntu 下通常:

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

查看 PHP-FPM 用户:

ps aux | grep php-fpm

或

grep user /etc/php/*/fpm/pool.d/www.conf

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

假设项目目录:

/var/www/html/project

1️⃣ 设置目录所有者

推荐方式(安全且实用):

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

如果你也要用 FTP/SSH 登录修改:

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

2️⃣ 设置目录和文件权限

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

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

3️⃣ 可写目录(缓存、上传、日志)

例如:

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

三、上传文件无法写入(常见坑)

如果 PHP 上传失败:

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

并确保:

upload_max_filesize = 20M
post_max_size = 20M

在:

/etc/php/*/fpm/php.ini

四、sudo 让 PHP 执行命令(不推荐但可用)

如必须:

sudo visudo

添加:

www-data ALL=(ALL) NOPASSWD: /usr/bin/php

五、SELinux(Ubuntu 一般没开)

Ubuntu 默认 不启用 SELinux,如遇权限问题多为 chmod/chown 问题。


六、快速安全检查建议

✅ 不要 777
✅ 不要 chmod -R 777
✅ 只给需要写的目录写权限


七、示例(Laravel 项目)

sudo chown -R www-data:www-data /var/www/html/laravel
sudo chmod -R 755 /var/www/html/laravel
sudo chmod -R 775 /var/www/html/laravel/storage
sudo chmod -R 775 /var/www/html/laravel/bootstrap/cache

如果你能说明:

  • 用的 Apache 还是 Nginx
  • PHP 版本
  • 具体报错(如 500 / Permission denied)

我可以给你更精确的命令。

0 踩