Download | Plain Text | Line Numbers


--- a/sapi/fpm/fpm/fpm_main.c	2026-10-06 18:53:18.000000000 +0200
+++ b/sapi/fpm/fpm/fpm_main.c	2026-10-15 11:28:10.007078053 +0200
@@ -1380,7 +1380,6 @@
 	int *mode = (int *)arg;
 	char *key;
 	char *value = NULL;
-	struct key_value_s kv;
 
 	if (!mode || !arg1) return;
 
@@ -1391,7 +1390,7 @@
 
 	key = Z_STRVAL_P(arg1);
 
-	if (!key || strlen(key) < 1) {
+	if (!key || Z_STRLEN_P(arg1) < 1) {
 		zlog(ZLOG_ERROR, "Passing INI directive through FastCGI: empty key");
 		return;
 	}
@@ -1405,10 +1404,8 @@
 		return;
 	}
 
-	kv.key = key;
-	kv.value = value;
-	kv.next = NULL;
-	if (fpm_php_apply_defines_ex(&kv, *mode) == -1) {
+	// zend_string of arg2 is marked persistent but releasing doesn't know. so pass the internal char*
+	if (zend_alter_ini_entry_chars(Z_STR_P(arg1), value, Z_STRLEN_P(arg2), *mode, PHP_INI_STAGE_HTACCESS) == FAILURE) {
 		zlog(ZLOG_ERROR, "Passing INI directive through FastCGI: unable to set '%s'", key);
 	}
 }