Docker Sail启动Laravel后出现Permission denied权限报错
问题根源
报错来自目录权限不匹配,核心是两个操作失误:
- 安装Docker后未将当前用户加入
docker用户组,所有Docker相关操作必须加sudo才能运行 - 创建Laravel项目时命令末尾加了
sudo,导致整个项目目录所有者为root,容器内运行Laravel的www-data用户没有storage、bootstrap/cache目录的读写权限,无法写入日志、生成视图缓存文件。
解决步骤
- 按
Ctrl+C停掉当前正在运行的Sail服务 - 在项目根目录执行命令,将项目目录所有权改回当前登录用户:
sudo chown -R $USER:$USER .
- 执行命令把当前用户加入docker用户组,后续操作Docker无需再加sudo:
sudo usermod -aG docker $USER
执行完后运行newgrp docker让权限立即生效,不想用这个命令注销账号重新登录一次也可以。
- 后台启动Sail容器,进入容器的root shell配置目录权限:
./vendor/bin/sail up -d ./vendor/bin/sail root-shell
进入容器后依次执行以下命令调整权限:
chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache chmod -R 755 /var/www/html/storage /var/www/html/bootstrap/cache exit
- 重启Sail服务:
./vendor/bin/sail restart
操作完刷新浏览器页面就能正常访问了。
注意事项
- 后续新建Laravel Sail项目不要在命令末尾加
sudo,直接执行curl -s https://laravel.build/example-app | bash即可 - 不要图省事给目录设置777权限,会引入不必要的安全风险,按上述方法配置属主和对应权限即可
内容的提问来源于stack exchange,提问作者Blairi
相关产品推荐
相关产品推荐

