Laravel部署后空白页、403错误等问题,核心是入口路径未指向public目录;需依次检查Web根目录配置、storage/bootstrap/cache权限、.env文件与密钥、缓存清理、APP_DEBUG调试模式及PHP扩展完整性。

遇到 Laravel 部署后页面空白、403 错误或完全没报错?别急着重装,问题往往就藏在几个关键配置点上。核心思路是:先确认入口路径是否正确,再检查权限与环境状态,最后靠日志定位真实原因。
空白页(White Screen)的6个关键排查点
空白页本质是 PHP 没输出任何内容,通常因致命错误被静默吞掉,或关键文件未加载。
-
确认 Web 根目录指向 public/:Apache 要检查
DocumentRoot,Nginx 看root指令,本地测试可用php -S localhost:8000 -t public快速验证。 -
检查 storage 和 bootstrap/cache 权限:运行
chmod -R 775 storage bootstrap/cache,确保 Laravel 可写入缓存与日志。 -
确认 .env 文件存在且已生成密钥:若缺失,执行
cp .env.example .env后运行php artisan key:generate。 -
清空所有缓存:依次执行
php artisan config:clear、cache:clear、view:clear、route:clear。 -
临时开启调试模式:在
.env中设APP_DEBUG=true,刷新页面看是否出现具体错误(排查完务必关掉)。 -
检查 PHP 扩展是否齐全:OpenSSL、PDO、Mbstring、Tokenizer、XML、Ctype、JSON 缺一不可,用
php -m查看。
403 Forbidden 错误的两类主因与对应解法
403 不等于服务器权限问题——Laravel 场景下,它更可能是路由保护机制在起作用。
-
Web 服务器级 403:最常见于根目录没指向
public/,导致直接访问项目根目录触发 Apache/Nginx 的目录禁止访问策略。解决方式就是严格校验虚拟主机或子域名的 document root 是否为/your-project/public。 -
应用逻辑级 403:多见于自定义后台路由、图片上传、登录接口等场景。重点检查:
- 表单是否漏了
@csrf或 AJAX 请求头是否携带X-CSRF-TOKEN; - 路由是否被
auth、can或自定义中间件拦截,用php artisan route:list查看 Middleware 列; - session 配置是否跨域异常(如
domain设置不带点号、same_site不匹配)。
- 表单是否漏了
日志是唯一可信的“证人”
别猜,直接看 storage/logs/laravel.log。它会明确告诉你:什么错误、在哪一行、由哪个文件触发。
- 打开日志后,只盯三样:以
ERROR或exception开头的行、报错文件路径、行号; - 如果日志为空,说明错误发生在 Laravel 启动前(如
index.php路径错误、vendor/autoload.php加载失败),此时需检查index.php中的 require 路径是否准确(尤其子域名部署时); - 线上环境即使
APP_DEBUG=false,错误仍会记录进日志,所以日志永远是最优先排查入口。
子域名与特殊部署结构的注意事项
cPanel 子域名、二级目录部署等非标准结构,最容易出问题的地方是 index.php 内的相对路径。
- 若项目实际放在
/public_html/shop/flipmart/,而子域名指向/public_html/shop/,则index.php中的require __DIR__.'/flipmart/vendor/autoload.php'必须真实存在; - 用 FTP 或文件管理器确认
vendor/autoload.php文件可读(权限建议 644); - 若
vendor目录不存在,需在项目根目录(flipmart/)下运行composer install --no-dev,或提前在本地装好再上传。

















