php-fpm access.format: allow environment variables (in addition to fastcgi env vars)
オープン
@bukka がすでに取り組んでいます。
2023年5月5日 から。
Feature
SAPI: fpm
Status: Needs Triage
- 主要言語
- C
- スター
- 40.4k
- フォーク
- 8.2k
- 平均マージ
- 2日 13時間
- マージ済み PR(30日)
- 96
説明
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
+}
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
評価
この issue はまだ評価されていません。