You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Sail启动后访问出现权限拒绝错误,求排查方案

问题原因

这是因为Docker容器内的运行用户(默认是www-data)与宿主机用户的权限不匹配:

  • 你在宿主机创建的Laravel项目文件,所属用户是本地Ubuntu用户,而Sail容器里的PHP进程以www-data用户运行,没有对storage和bootstrap/cache目录的读写权限。
  • php artisan serve直接用宿主机的PHP进程运行,继承了你本地用户的权限,所以能正常读写这些目录。
解决方案

方案1:宿主机上修复目录权限

在项目根目录执行以下命令,给必要目录设置正确的权限和归属:

# 设置目录读写权限
sudo chmod -R 775 storage bootstrap/cache
# 将目录归属设置为当前用户和www-data组(容器内进程属于该组)
sudo chown -R $USER:www-data storage bootstrap/cache

方案2:在Sail容器内修复权限

如果宿主机操作后仍未解决,直接进入容器内部修改权限:

# 进入Sail的应用容器
./vendor/bin/sail exec laravel.test bash
# 在容器内执行权限修复
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
# 退出容器
exit

方案3:修改Sail的Docker配置(持久解决)

如果不想每次创建项目都手动改权限,可以修改项目根目录的docker-compose.yml,让容器内运行用户的UID与宿主机一致:

  1. 打开docker-compose.yml,找到laravel.test服务,添加或修改user配置项:
services:
    laravel.test:
        # ... 其他原有配置
        user: '${UID:-1000}:${GID:-1000}'
  1. 在项目根目录的.env文件中添加你的UID和GID(可用id -u和id -g命令查看当前用户的对应值):
UID=1000
GID=1000
  1. 重启Sail使配置生效:
./vendor/bin/sail down
./vendor/bin/sail up -d

内容的提问来源于stack exchange,提问作者alexciornei22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:24:28