From 1a79ea47c5c92b329bcffbb28b655a42d463218e Mon Sep 17 00:00:00 2001 From: Rasmus Lerdorf Date: Thu, 19 Mar 2026 04:12:45 -0400 Subject: [PATCH] Fix GH-21411: opcache_compile_file() fails to early-bind classes without parents (#21412) --- ext/opcache/zend_accelerator_util_funcs.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ext/opcache/zend_accelerator_util_funcs.c b/ext/opcache/zend_accelerator_util_funcs.c index 716a6e4df00..2d2c693d031 100644 --- a/ext/opcache/zend_accelerator_util_funcs.c +++ b/ext/opcache/zend_accelerator_util_funcs.c @@ -360,6 +360,12 @@ static void zend_accel_do_delayed_early_binding( : NULL; if (parent_ce || (orig_ce->ce_flags & ZEND_ACC_LINKED)) { ce = zend_try_early_bind(orig_ce, parent_ce, early_binding->lcname, zv); + } else if (ZSTR_LEN(early_binding->lc_parent_name) == 0) { + /* Parentless class: use the same binding path as the VM handler */ + zval lcname_zv[2]; + ZVAL_STR(&lcname_zv[0], early_binding->lcname); + ZVAL_STR(&lcname_zv[1], early_binding->rtd_key); + ce = zend_bind_class_in_slot(zv, lcname_zv, early_binding->lc_parent_name); } } if (ce && early_binding->cache_slot != (uint32_t) -1) {