php / php/php-src

php-fpm access.format: allow environment variables (in addition to fastcgi env vars)

Ouverte
#11,131 0 commentaires 0 réactions 1 personne assignée Voir sur GitHub

@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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.