Laravel生产环境Storage图片403禁止访问问题(本地正常)
Laravel电商网站生产环境图片403 Forbidden 解决方法
核心问题排查与修复步骤
1. 修正图片存储路径(最可能的根源)
Laravel的storage:link命令默认将public/storage软链指向storage/app/public目录,只有存放在storage/app/public下的文件才能通过domain/storage/xxx路径访问。你当前把图片存在storage/products,这个目录不在软链指向的范围内,导致请求找不到对应文件触发403。
修复方式二选一:
- 优先推荐:将产品图片移动到
storage/app/public/products目录下,保持符合Laravel默认存储规范 - 特殊场景可选:重新创建软链指向
storage/products(不推荐,可能引发后续存储逻辑问题)rm public/storage ln -s ../storage/products public/storage
2. 调整.htaccess规则顺序
你当前的存储路径重写规则放在了前端控制器规则之后,会被前面的规则拦截失效,需要把它移到Send Requests To Front Controller之前:
RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Allow access to storage directory RewriteRule ^storage/(.*)$ /rup/storage/app/public/$1 [L] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
3. 完善目录权限设置
除了storage目录,还要确保项目根目录等父级目录的权限允许Web服务器用户访问,同时避免过度宽松的权限:
# 给项目根目录设置基础访问权限 chmod 755 /path/to/your/laravel/project chown -R www-data:www-data /path/to/your/laravel/project # 给storage目录和文件设置更安全的权限 find storage -type d -exec chmod 755 {} \; find storage -type f -exec chmod 644 {} \;
4. 检查Web服务器配置
Apache环境:确认虚拟主机配置中开启了
AllowOverride All,否则.htaccess规则无法生效:<Directory /var/www/html/your-laravel-project> AllowOverride All Require all granted </Directory>修改后重启Apache:
sudo systemctl restart apache2Nginx环境:在server块中添加storage路径的解析规则,确保请求能直接指向存储目录:
location /storage { alias /var/www/html/your-laravel-project/storage/app/public; autoindex off; } location / { try_files $uri $uri/ /index.php?$query_string; }修改后重启Nginx:
sudo systemctl restart nginx
5. 验证软链有效性
登录服务器检查public/storage软链的目标是否正确:
ls -l public/storage
如果目标路径错误,重新创建软链:
# 先删除旧软链 rm -f public/storage # 用artisan命令创建默认软链 php artisan storage:link
内容的提问来源于stack exchange,提问作者mahtab.hossain
相关产品推荐
相关产品推荐

