Category
stdlib · php-src-strict · Pillar 4 Correctness · (re-#20799 / #20647 / #20274)
Problem
Under PHP_COMPILER_PROFILE=8.4, mb_ucfirst() / mb_lcfirst() / mb_trim() / mb_str_pad() are registered, but mb_ucwords() is not (function_exists false). Prior issues closed as fixed; gap is back on current master.
Probed 2026-07-19 on c8e43c835 via ./script/docker-exec.sh.
| Repro |
Zend 8.4 + mbstring |
VM PROFILE=8.4 (2026-07-19) |
function_exists('mb_ucfirst') |
true |
true |
function_exists('mb_ucwords') |
true |
false |
mb_ucwords('hello world') |
Hello World |
Error: Call to undefined function mb_ucwords() |
php-src reference
PHP implementation target
- Add
ext/mbstring/mb_ucwords.php (mirror ext/mbstring/mb_ucfirst.php)
- Register in
ext/mbstring/Module.php + spine inventory; reuse VmMbstring case-helper path
- PHP-in-PHP; no new
runtime/*.c
Repro
./script/docker-exec.sh -- bash -lc 'export PHP_COMPILER_PROFILE=8.4
php bin/vm.php -r \"
echo function_exists(\\"mb_ucwords\\") ? \\"yes\\" : \\"no\\", PHP_EOL;
echo mb_ucwords(\\"hello world\\"), PHP_EOL;
\"'
Done when
Category
stdlib· php-src-strict · Pillar 4 Correctness · (re-#20799 / #20647 / #20274)Problem
Under
PHP_COMPILER_PROFILE=8.4,mb_ucfirst()/mb_lcfirst()/mb_trim()/mb_str_pad()are registered, butmb_ucwords()is not (function_existsfalse). Prior issues closed as fixed; gap is back on current master.Probed 2026-07-19 on
c8e43c835via./script/docker-exec.sh.function_exists('mb_ucfirst')truetruefunction_exists('mb_ucwords')truefalsemb_ucwords('hello world')Hello WorldError: Call to undefined function mb_ucwords()php-src reference
ext/mbstring/mbstring.c—PHP_FUNCTION(mb_ucwords)ext/mbstring/mbstring.stub.php—mb_ucwordsPHP implementation target
ext/mbstring/mb_ucwords.php(mirrorext/mbstring/mb_ucfirst.php)ext/mbstring/Module.php+ spine inventory; reuseVmMbstringcase-helper pathruntime/*.cRepro
Done when
function_exists('mb_ucwords')true underPHP_COMPILER_PROFILE=8.4mb_ucwords('hello world')→Hello World(encoding/arg coercion php-src-strict withmb_ucfirst).phptundertest/compliance/cases/mbstring/