laravel安装后出现503错误通常源于web服务器、php环境或关键服务未就绪。需重点排查:php-fpm是否运行、数据库连接是否阻塞、nginx/apache转发是否正确;检查维护模式是否启用;排除反向代理或负载均衡器干扰。

服务不可用(503 Service Unavailable)在 Laravel 安装完成后出现,通常不是 Laravel 本身崩溃,而是 Web 服务器、PHP 运行环境或关键服务未就绪导致的“网关级拒绝”。重点排查三类问题:PHP-FPM 是否运行、数据库连接是否阻塞请求、以及 Nginx/Apache 是否正确将请求转发给 PHP 处理器。
检查 PHP-FPM 服务状态
503 最常见原因是 Web 服务器(如 Nginx)配置了 fastcgi_pass,但 PHP-FPM 进程根本没启动或已崩溃。
- Linux 下运行 systemctl status php*-fpm(如
php8.2-fpm),确认状态为 active (running) - 若显示 failed,尝试重启:
sudo systemctl restart php8.2-fpm - 检查 Nginx 配置中
fastcgi_pass的 socket 路径是否匹配 PHP-FPM 实际监听地址(如unix:/run/php/php8.2-fpm.sock) - Apache 用户请确认
libphp.so已加载,且a2enmod php8.2已启用
验证数据库连接是否卡住
Laravel 启动时若 APP_ENV=production 且 .env 中 DB_* 配置错误(如密码错、host 不通、端口被拒),部分部署方式(如 Supervisor 管理的队列或健康检查)会直接返回 503,而非 500。
- 在项目根目录执行:
php artisan tinker,然后输入DB::connection()->getPdo();—— 若报错说明数据库层不通 - 检查
.env中DB_HOST是127.0.0.1还是localhost(MySQL 对这两者解析行为不同;Docker 环境必须用服务名如db) - 临时将
APP_ENV=local并开启APP_DEBUG=true,再访问首页 —— 若变成 500 并显示 PDO 异常,则确认是数据库问题
确认 Web 服务器未启用维护模式
执行过 php artisan down 但忘记恢复,会导致所有请求统一返回 503。
- 运行
php artisan up强制关闭维护模式 - 检查项目根目录是否存在
storage/framework/down文件,有则手动删除 - 若使用 Envoy 或 CI/CD 脚本自动执行
down,检查部署流程是否遗漏up步骤
检查反向代理或负载均衡器设置
如果你在 Nginx 前还套了一层 Caddy、Traefik、Cloudflare 或云厂商 LB,503 很可能来自它们,而非 Laravel 本身。
- 绕过代理,直接用
curl -v http://localhost:8000(如果用了php artisan serve)或curl -v http://127.0.0.1(直连 Nginx)测试 - 查看代理日志:例如 Cloudflare 的 Edge Logs、Nginx 的 error_log(路径通常为
/var/log/nginx/error.log),搜索 “upstream timed out” 或 “no live upstreams” - 确认代理后端健康检查路径(如
/healthz)是否真实存在并返回 200 —— 很多 LB 默认用根路径做探针,而 Laravel 根路由未定义时会 404,触发主动下线











