温馨提示×

linux laravel如何设置权限

小樊
48
2026-10-18 20:39:21
栏目: 智能运维

在 Linux 服务器上部署 Laravel 项目时,权限设置是非常关键的一步,否则容易出现 500 错误、日志无法写入、缓存无法生成 等问题。

下面按最常见、最安全的方式来说明。


一、Laravel 需要写权限的目录

Laravel 运行时需要写权限的目录主要有:

storage
bootstrap/cache

具体包括:

  • storage/app
  • storage/framework
  • storage/logs
  • bootstrap/cache

二、推荐的用户结构(非常重要)

通常你的环境是这样的:

  • Web 服务器用户(如 nginx / apache)
    • Nginx:www-data
    • Apache:www-data
  • 你登录的 Linux 用户
    • 比如:deploy 或 ubuntu

✅ 最佳实践:你和 Web 服务器属于同一个用户组


三、标准权限设置方式(推荐)

1️⃣ 进入项目目录

cd /var/www/your-laravel-project

2️⃣ 设置目录所有者

假设 Web 用户是 www-data,你的用户是 deploy:

sudo chown -R deploy:www-data .

3️⃣ 设置目录权限

sudo find . -type d -exec chmod 755 {} \;

4️⃣ 设置文件权限

sudo find . -type f -exec chmod 644 {} \;

5️⃣ 给 storage 和 bootstrap/cache 写权限

sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache

四、如果你用的是 Nginx + PHP-FPM(最常见)

确认 PHP-FPM 运行用户:

ps aux | grep php-fpm

一般是:

www-data

确保:

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

五、最简单但不够安全的方式(不推荐生产)

⚠️ 仅用于本地测试:

chmod -R 777 storage
chmod -R 777 bootstrap/cache

❌ 生产环境绝对不要这样做


六、SELinux 情况(CentOS / RHEL)

如果是 CentOS 并启用了 SELinux:

sudo setsebool -P httpd_read_user_content 1
sudo setsebool -P httpd_unified 1

或:

sudo chcon -R -t httpd_sys_rw_content_t storage

七、Composer 安装后别忘了

composer install
php artisan config:cache
php artisan route:cache
php artisan view:cache

八、快速检查清单 ✅

  • [ ] storage 可写
  • [ ] bootstrap/cache 可写
  • [ ] Web 用户有访问权限
  • [ ] 没有使用 777
  • [ ] php artisan 能正常运行

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

  • 你用的是 Nginx 还是 Apache
  • Linux 发行版(Ubuntu / CentOS)
  • 是否 Docker / 宝塔 / 云服务器

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

0 踩