在AWS EC2部署Laravel应用遇存储权限问题求助
解决Laravel在AWS EC2上的存储目录访问错误
1. 确认Web服务器运行用户
AWS EC2不同系统的Web服务器用户存在差异,先核实当前运行用户:
- Apache(Amazon Linux/CentOS):执行
ps aux | grep httpd,用户通常为apache - Nginx(Ubuntu):执行
ps aux | grep nginx,用户通常为www-data或nginx
2. 递归设置目录所有者与组
将storage和bootstrap/cache目录的所有者递归改为Web服务器用户(以Apache的apache用户为例,若为其他用户则替换):
sudo chown -R apache:apache /path/to/your/laravel/storage sudo chown -R apache:apache /path/to/your/laravel/bootstrap/cache
3. 递归设置正确的文件/目录权限
Laravel要求目录具备执行权限(用于遍历),文件具备读写权限,用以下命令递归配置:
# 处理storage目录 sudo find /path/to/your/laravel/storage -type d -exec chmod 755 {} \; sudo find /path/to/your/laravel/storage -type f -exec chmod 644 {} \; # 处理bootstrap/cache目录 sudo find /path/to/your/laravel/bootstrap/cache -type d -exec chmod 755 {} \; sudo find /path/to/your/laravel/bootstrap/cache -type f -exec chmod 644 {} \;
4. 修复SELinux限制(AWS EC2常见问题)
AWS EC2默认开启SELinux,即使权限配置正确也会阻止Web服务器访问目录:
- 检查SELinux状态:执行
sestatus,若显示Enforcing则需处理 - 设置目录SELinux上下文(永久生效):
sudo chcon -R -t httpd_sys_rw_content_t /path/to/your/laravel/storage sudo chcon -R -t httpd_sys_rw_content_t /path/to/your/laravel/bootstrap/cache
- 若需临时测试(不推荐永久关闭):执行
sudo setenforce 0,验证正常后再设置上下文
5. 验证Laravel基础配置
确保.env文件中APP_KEY已生成(未生成则执行 php artisan key:generate),且config/filesystems.php中的磁盘配置指向正确的存储路径。
内容的提问来源于stack exchange,提问作者Bala
相关产品推荐
相关产品推荐

