Lumen微服务调试模式下不显示堆栈跟踪,排查缺失配置
自定义异常处理逻辑
检查两个服务的app/Exceptions/Handler.php文件中的render方法。如果其中一个服务的Handler被修改,强制返回用户友好错误页面(忽略APP_DEBUG配置),就会出现这种情况。比如类似以下代码会覆盖默认的调试输出:public function render($request, Exception $exception) { return response()->view('errors.500', [], 500); }对比两个服务的Handler实现,确保没有硬编码错误响应。
配置缓存问题
如果其中一个服务曾执行过php artisan config:cache命令,配置会被缓存,后续修改.env文件不会立即生效。执行php artisan config:clear清除配置缓存,再测试是否显示堆栈跟踪。服务器层面的错误页面配置
检查Web服务器(Apache/Nginx)的配置,是否设置了自定义的500错误页面,强制替换了Lumen的输出。比如Nginx中如果有如下配置:error_page 500 /500.html;会直接返回静态500页面,覆盖Lumen的调试信息。修改服务器配置,移除这类强制错误页面的设置。
PHP环境配置差异
检查PHP的display_errors配置项,虽然Lumen在APP_DEBUG=true时应该强制显示错误,但如果其中一个环境的php.ini中display_errors = Off,可能影响调试输出。可以在控制器中临时输出ini_get('display_errors')确认。Lumen版本不一致
不同版本的Lumen在错误处理逻辑上可能存在差异,比如旧版本对APP_DEBUG的判断逻辑不同。对比两个服务的composer.json中的Lumen版本,确保版本一致后再排查其他问题。
内容的提问来源于stack exchange,提问作者Sherlock

