我在 nginx 后面有一个 Laravel 应用程序,最近将 php 从版本 7.1 更新到 7.3(docker image 7.1-fpm-alpine 到 7.3-fpm-alpine)。
我使用具有render()输出错误页面功能的异常。Laravel 会记录异常消息并完成堆栈跟踪。
由于更新到 php 7.3,nginx 显示它是默认的 502 错误页面和日志[error] 11#11: *61 upstream prematurely closed FastCGI stdout while reading response header from upstream, client: [...]。nginx 中的 stacktrace 在 2048 字节后被截断。
服务器故障问题“Nginx/PHP-FPM 长日志行被截断”表明 nginx 仅处理最多 2048 个字节的错误。
在 PHP 7.1 中,堆栈跟踪已经被截断了。
我是对的,问题是 PHP 现在记录完整的堆栈跟踪而不是截断它?
有没有办法在 PHP 中截断日志输出以返回到 PHP 7.1 的行为?
小智 5
默认情况下,PHP 7.3 的功能应该与以前的版本相同(它会截断 1024 个字符),但有新的配置以允许更多字符:
log_limit integer 记录行的日志限制,允许记录超过 1024 个字符的消息而不换行。默认值:1024。自 PHP 7.3.0 起可用。
我在使用官方 Docker PHP 7.3 容器时遇到了这个问题,它专门覆盖了以下文件中的默认值Dockerfile:
echo 'log_limit = 8192';
Run Code Online (Sandbox Code Playgroud)
它可以通过覆盖来修复,log_limit因此它属于 nginx 的 2048 限制:
[global]
log_limit = 1024
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |