Laravel项目无限挂起无响应,请求处理终止失败求助
Laravel项目无限挂起问题排查求助
执行php artisan serve后页面持续加载,无响应也无超时,调试定位到入口代码段:
$response = $kernel->handle( $request = Request::capture() )->send();
仅修改了控制器代码(拉取推送的变更),未改动其他内容,修改后出现该问题。已尝试重新下载项目、确认数据库配置正确,问题仍存在。
补充信息
- 尝试通过vhost和
php -S localhost:8000 -t .运行,问题依旧; - 同一环境下localhost/phpMyAdmin也出现无响应;
- XAMPP启动Apache时,80、443端口自动改为64129、64130。
环境版本
php version: 8.2.4 laravel's php version: 8.0.2 laravel version: 9.2
排查及解决建议
1. 端口与网络层面排查
- 检查80、443端口占用情况(Windows用
netstat -ano | findstr ":80",Linux/macOS用lsof -i :80),Apache自动换端口说明原端口被占用,可能导致本地请求阻塞; - 尝试绑定未被占用的端口启动服务,比如
php artisan serve --port=9000,测试访问localhost:9000是否正常响应。
2. 代码逻辑阻塞排查
- 聚焦控制器变更代码:检查是否存在无限循环、未提交的数据库事务、同步调用慢外部接口、死锁等情况;
- 查看
storage/logs/laravel.log日志,确认请求是否进入控制器,定位阻塞节点;若日志无输出,说明请求卡在中间件或请求捕获阶段; - 临时注释控制器新增代码,逐步恢复,排查触发阻塞的具体代码段。
3. PHP版本兼容性排查
- 当前PHP版本8.2.4高于Laravel要求的8.0.2,虽Laravel 9支持8.0+,但高版本PHP可能存在函数或扩展兼容性问题;
- 切换到符合要求的PHP 8.0.x版本,测试项目是否正常运行。
4. 依赖服务排查
- 检查MySQL、Redis等服务是否正常启动,phpMyAdmin无响应可能是数据库服务异常,导致Laravel请求卡在数据库初始化环节;
- 用
php artisan tinker测试数据库连接:执行DB::connection()->getPdo(),查看是否有连接超时或阻塞情况。
5. 请求捕获阶段排查
- 检查
app/Http/Kernel.php中的全局中间件,是否新增了可能导致阻塞的中间件; - 临时移除非必要全局中间件,测试请求是否能正常处理;排查是否有自定义请求类修改了
Request::capture()逻辑。
内容的提问来源于stack exchange,提问作者Ayman Eid
相关产品推荐
相关产品推荐

