Category
stdlib
Problem
ob_start() rejects any arguments with LogicException (ext/standard/ob_start.php). Zend supports an optional callback (and chunk size / erase flags) that can transform or discard buffer contents on flush.
php-src reference
Repro (failure today)
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
php -r "ob_start(fn(\$b,\$p)=>strtoupper(\$b)); echo \"hi\"; echo ob_get_clean();"
php bin/vm.php -r "ob_start(fn(\$b,\$p)=>strtoupper(\$b)); echo \"hi\"; echo ob_get_clean();"
'
| Runtime |
Output |
| Zend |
HI |
| VM |
LogicException: ob_start() callback arguments not supported in this compiler build |
Scope (this repo)
| Area |
Files |
| VM |
VM\OutputBuffer, ext/standard/ob_start.php — remove arity guard; invoke callback with PHP_OUTPUT_HANDLER_* phases |
| JIT |
ext/standard/JitObStart.php — phase 2 after VM |
| Tests |
test/compliance/cases/stdlib/ob_start_callback.phpt |
| Matrix |
script/capability-matrix.php |
Done when
Related
Category
stdlibProblem
ob_start()rejects any arguments withLogicException(ext/standard/ob_start.php). Zend supports an optional callback (and chunk size / erase flags) that can transform or discard buffer contents on flush.php-src reference
ext/standard/output.c—php_ob_start(), user handler invocationmain/output.c— output handler chainRepro (failure today)
HILogicException: ob_start() callback arguments not supported in this compiler buildScope (this repo)
VM\OutputBuffer,ext/standard/ob_start.php— remove arity guard; invoke callback withPHP_OUTPUT_HANDLER_*phasesext/standard/JitObStart.php— phase 2 after VMtest/compliance/cases/stdlib/ob_start_callback.phptscript/capability-matrix.phpDone when
HIonbin/vm.php[$obj, 'method']callables work on VM$chunk_size/$flagsmatch Zend for at least default +PHP_OUTPUT_HANDLER_CLEANABLE./script/ci-fast.sh --filter ob_start_callbackgreenRelated