php-fpm access.format: allow environment variables (in addition to fastcgi env vars)
Abierto
@bukka ya está trabajando en esto.
Desde el 5/5/2023.
Feature
SAPI: fpm
Status: Needs Triage
- Lenguaje dominante
- C
- Estrellas
- 40.4k
- Forks
- 8.2k
- Merge medio
- 2 d 13 h
- PR fusionados (30 d)
- 96
Descripción
Description
We're using the patch below to inject environment variables into the php-fpm access log, e.g. for statistics about outgoing requests that were performed using curl. Example usage:
access.format = "{"uid":"%{UNIQUE_ID}E","timestamp":%{%s}t,"requesttime":%{request_time}E,"requestvolume":"%{request_volume}E}"
Could you provide some guidance if this has any change to be accepted, and if so, how I can help in the process?
diff --git a/sapi/fpm/fpm/fpm_log.c b/sapi/fpm/fpm/fpm_log.c
index bb66c0812..518aba4aa 100644
--- a/sapi/fpm/fpm/fpm_log.c
+++ b/sapi/fpm/fpm/fpm_log.c
@@ -247,7 +247,7 @@ int fpm_log_write(char *log_format) /* {{{ */
case 'e': /* fastcgi env */
if (format[0] == '\0') {
- zlog(ZLOG_WARNING, "the name of the environment variable must be set between embraces for %%%c", *s);
+ zlog(ZLOG_WARNING, "the name of the environment variable must be set between curly braces for %%%c", *s);
return -1;
}
@@ -258,6 +258,19 @@ int fpm_log_write(char *log_format) /* {{{ */
format[0] = '\0';
break;
+ case 'E': /* env */
+ if (format[0] == '\0') {
+ zlog(ZLOG_WARNING, "the name of the environment variable must be set between curly braces for %%%c", *s);
+ return -1;
+ }
+
+ if (!test) {
+ char *env = getenv(format);
+ len2 = snprintf(b, FPM_LOG_BUFFER - len, "%s", env ? env : "-");
+ }
+ format[0] = '\0';
+ break;
+
case 'f': /* script */
if (!test) {
len2 = snprintf(b, FPM_LOG_BUFFER - len, "%s", *proc.script_filename ? proc.script_filename : "-");
@@ -526,4 +539,4 @@ static int fpm_access_log_suppress(struct fpm_scoreboard_proc_s *proc)
}
return 0;
-}
\ No newline at end of file
+}
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Evaluación
Este issue todavía no se ha evaluado.