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

Laravel 8项目部署至主机出现403 Access Forbidden错误如何解决

Laravel 8 部署后访问报403 Access Forbidden 排查修复方案

按以下优先级逐一排查,绝大多数共享主机部署的403问题都能定位解决:

  • 第一优先级:检查站点根目录指向是否正确
    Laravel 8的唯一入口是public/index.php,站点的根目录必须直接指向项目内的public文件夹,不能指向项目根目录。共享主机默认根目录一般是wwwroot/public_html,正确做法是把项目内public目录下的所有文件移动到站点根目录,同时把项目其他文件放到根目录同级的非web可访问目录,再修改根目录下index.php里的项目路径引用即可。
    如果无法调整目录结构,也可以在项目根目录新建.htaccess文件(Apache环境)添加重写规则,把所有请求转发到public目录,规则如下:
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^(.*)$ public/$1 [L]
    </IfModule>
    
    Nginx环境需要在站点配置里把root字段直接设为项目的public目录路径,重载Nginx配置即可。
  • 第二优先级:检查文件和目录权限
    Web服务运行用户需要有项目文件的读取权限,以及storage、bootstrap/cache目录的读写权限,权限配置错误会被服务器直接拒绝访问返回403。
    标准权限配置参考:所有单文件权限设为644,所有目录权限设为755,storage和bootstrap/cache目录权限设为775即可,不要把整个项目权限设为777,大部分共享主机会拦截全权限目录直接返回403。SSH环境可执行以下命令批量修正:
    # 修正所有文件权限为644
    find /你的项目实际路径 -type f -exec chmod 644 {} \;
    # 修正所有目录权限为755
    find /你的项目实际路径 -type d -exec chmod 755 {} \;
    # 给缓存、存储目录开放读写权限
    chmod -R 775 /你的项目实际路径/storage
    chmod -R 775 /你的项目实际路径/bootstrap/cache
    
  • 第三优先级:检查核心文件是否漏传
    大部分FTP工具默认会隐藏以.开头的文件,上传时很容易漏传public/.htaccess、项目根目录的.env文件。public/.htaccess缺失会导致Apache无法识别路由规则、无法找到入口文件,直接返回403,漏传的话直接从Laravel 8官方源码包中复制对应文件到对应位置即可。
    同时确认public/index.php文件存在,文件名大小写和服务器规则匹配,部分主机开启严格大小写校验,文件名大小写错误也会触发403。
  • 第四优先级:检查目录索引配置
    确认站点配置中已经把index.php设为默认索引文件,Apache环境可以在public/.htaccess中添加如下配置:
    DirectoryIndex index.php
    
    配置后服务器收到目录访问请求时会自动加载index.php,不会因为找不到默认索引文件返回403。
  • 第五优先级:检查主机安全拦截规则
    如果以上配置都正确还是报403,到主机面板查看站点错误日志和WAF拦截记录,部分共享主机的安全规则会拦截特定PHP函数、或者禁止非根目录下的入口文件执行,根据日志提示调整对应规则即可。

共享主机部署Laravel出现403的场景中,90%以上的问题都是根目录没有指向public目录导致的,优先排查这一项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 23:39:28