diff -Naur a/build/gen_stub.php b/build/gen_stub.php --- a/build/gen_stub.php 2026-10-19 19:02:46.000000000 +0200 +++ b/build/gen_stub.php 2026-10-21 15:48:33.790102242 +0200 @@ -3051,6 +3051,7 @@ "username" => "ZEND_STR_USERNAME", "password" => "ZEND_STR_PASSWORD", "clone" => "ZEND_STR_CLONE", + "memory_limit" => "ZEND_STR_MEMORY_LIMIT", '8.0' => 'ZEND_STR_8_DOT_0', '8.1' => 'ZEND_STR_8_DOT_1', '8.2' => 'ZEND_STR_8_DOT_2', diff -Naur a/main/main.c b/main/main.c --- a/main/main.c 2026-10-21 15:46:21.154304938 +0200 +++ b/main/main.c 2026-10-21 15:51:43.307014361 +0200 @@ -378,12 +378,18 @@ } if (zend_set_memory_limit(value) == FAILURE) { - zend_error(E_ERROR, "Failed to set memory limit to %zd bytes (Current memory usage is %zd bytes)", value, zend_memory_usage(true)); - return FAILURE; + if (stage != ZEND_INI_STAGE_DEACTIVATE) { + zend_error(E_ERROR, "Failed to set memory limit to %zd bytes (Current memory usage is %zd bytes)", value, zend_memory_usage(true)); + return FAILURE; + } } - PG(memory_limit) = value; PG(max_memory_limit) = value; + if (stage == ZEND_INI_STAGE_DEACTIVATE) { + PG(memory_limit) = value; + } else { + zend_alter_ini_entry(ZSTR_KNOWN(ZEND_STR_MEMORY_LIMIT), new_value, PHP_INI_ALL, stage); + } return SUCCESS; } diff -Naur a/Zend/zend_string.h b/Zend/zend_string.h --- a/Zend/zend_string.h 2026-10-19 19:02:46.000000000 +0200 +++ b/Zend/zend_string.h 2026-10-21 15:48:33.791404255 +0200 @@ -716,6 +716,7 @@ _(ZEND_STR_SINCE, "since") \ _(ZEND_STR_GET, "get") \ _(ZEND_STR_SET, "set") \ + _(ZEND_STR_MEMORY_LIMIT, "memory_limit") \ _(ZEND_STR_8_DOT_0, "8.0") \ _(ZEND_STR_8_DOT_1, "8.1") \ _(ZEND_STR_8_DOT_2, "8.2") \