From f9f0583ee66c1641f116985e7f2df217d39fa634 Mon Sep 17 00:00:00 2001 From: Fabio Salvatori Date: Fri, 5 Dec 2025 15:51:47 +0100 Subject: [PATCH] add path info to slow log --- main/SAPI.h | 1 + sapi/fpm/fpm/fpm_main.c | 1 + sapi/fpm/fpm/fpm_php_trace.c | 40 ++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/main/SAPI.h b/main/SAPI.h index 9196982f54951..81fe03c1aac37 100644 --- a/main/SAPI.h +++ b/main/SAPI.h @@ -77,6 +77,7 @@ typedef struct { char *path_translated; char *request_uri; + char *path_info; /* Do not use request_body directly, but the php://input stream wrapper instead */ struct _php_stream *request_body; diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c index cc89b8c07c155..e9d56553bf46f 100644 --- a/sapi/fpm/fpm/fpm_main.c +++ b/sapi/fpm/fpm/fpm_main.c @@ -987,6 +987,7 @@ static void init_request_info(void) /* initialize the defaults */ SG(request_info).path_translated = NULL; SG(request_info).request_method = FCGI_GETENV(request, "REQUEST_METHOD"); + SG(request_info).path_info = FCGI_GETENV(request, "PATH_INFO"); SG(request_info).proto_num = 1000; SG(request_info).query_string = NULL; SG(request_info).request_uri = NULL; diff --git a/sapi/fpm/fpm/fpm_php_trace.c b/sapi/fpm/fpm/fpm_php_trace.c index fca79e4bf70e8..a43cd49403f42 100644 --- a/sapi/fpm/fpm/fpm_php_trace.c +++ b/sapi/fpm/fpm/fpm_php_trace.c @@ -34,6 +34,42 @@ #endif +static int dump_request_additional_info(FILE *slowlog){ + char buffer[1024]; + long addr; + + if (0 > fpm_trace_get_long((long) &SG(request_info).request_method, &addr)) { + return -1; + } + + if (0 > fpm_trace_get_strz(buffer, sizeof(buffer), addr)) { + return -1; + } + fprintf(slowlog, "request_method = %s\n", buffer); + + if (0 > fpm_trace_get_long((long) &SG(request_info).path_info, &addr)) { + + return -1; + } + + if (0 > fpm_trace_get_strz(buffer, sizeof(buffer), addr)) { + return -1; + } + fprintf(slowlog, "request_path_info = %s\n", buffer); + + + if (0 > fpm_trace_get_long((long) &SG(request_info).query_string, &addr)) { + return -1; + } + + if (0 > fpm_trace_get_strz(buffer, sizeof(buffer), addr)) { + return -1; + } + fprintf(slowlog, "request_query_string = %s\n", buffer); + + return 0; +} + static int fpm_php_trace_dump(struct fpm_child_s *child, FILE *slowlog) /* {{{ */ { int callers_limit = child->wp->config->request_slowlog_trace_depth; @@ -62,6 +98,10 @@ static int fpm_php_trace_dump(struct fpm_child_s *child, FILE *slowlog) /* {{{ * fprintf(slowlog, "script_filename = %s\n", buf); + if(dump_request_additional_info(slowlog) == -1){ + return -1; + } + if (0 > fpm_trace_get_long((long) &EG(current_execute_data), &l)) { return -1; }