php-fpm access.format: allow environment variables (in addition to fastcgi env vars)
Ouverte
@bukka y travaille déjà.
Depuis le 5/5/2023.
Feature
SAPI: fpm
Status: Needs Triage
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.2k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
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
+}
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Évaluation
Cette issue n'a pas encore été évaluée.