温馨提示×

linux laravel为何报权限错误

小樊
50
2026-10-04 05:40:19
栏目: 智能运维

在 Linux 上运行 Laravel 报权限错误,绝大多数情况都和文件/目录权限或 PHP 运行用户有关。下面按「最常见原因 → 排查方法 → 解决方式」给你说明。


一、最常见原因(90% 都在这里)

1️⃣ storage 和 bootstrap/cache 目录没写权限

Laravel 需要写入:

  • storage/
  • bootstrap/cache/

常见报错:

The stream or file "/var/www/laravel/storage/logs/laravel.log" could not be opened
Permission denied

✅ 解决:

chmod -R 755 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

www-data 是 Nginx/Apache 默认用户(Ubuntu)


2️⃣ PHP 运行用户 ≠ 文件所有者

比如:

  • 你是 ubuntu 用户上传代码
  • PHP 是 www-data 运行

就会导致“你看得到,PHP 写不了”

✅ 查看 PHP 用户:

ps aux | grep php

✅ 统一用户(推荐):

chown -R www-data:www-data /var/www/laravel

3️⃣ SELinux(CentOS / Rocky / Alma)

如果你用 CentOS,SELinux 会悄悄拦截写权限。

报错不明显,但就是写不进去。

✅ 临时测试:

setenforce 0

✅ 永久解决:

setsebool -P httpd_unified 1

4️⃣ .env 文件不存在或不可读

报错:

No application encryption key has been specified

✅ 解决:

cp .env.example .env
php artisan key:generate
chmod 644 .env

5️⃣ 缓存目录权限问题

执行 artisan 报权限错误:

php artisan config:cache

✅ 清缓存:

php artisan cache:clear
php artisan config:clear

二、标准推荐权限配置(最佳实践)

# 项目根目录
chown -R www-data:www-data /var/www/laravel

# 目录权限
find /var/www/laravel -type d -exec chmod 755 {} \;

# 文件权限
find /var/www/laravel -type f -exec chmod 644 {} \;

# 可写目录
chmod -R 775 storage bootstrap/cache

三、快速自查清单 ✅

  • [ ] storage/logs 可写
  • [ ] bootstrap/cache 可写
  • [ ] PHP 用户有项目权限
  • [ ] .env 存在
  • [ ] 非 SELinux 拦截

四、如果你愿意

你可以把具体报错信息贴出来(哪怕一行),我可以精确告诉你是哪一类权限问题,不用瞎试。

0 踩