You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Regression: file_get_contents()/readfile()/file_put_contents() null under strict_types — ValueError not TypeError (ext/standard/file.c) #17063
Under declare(strict_types=1), Zend file I/O builtins reject null filenames with TypeError. This compiler raises ValueError (Path cannot be empty) from shared path-string guards — same root cause as #17060.
Fix: VM execute paths now use VmStreamPath::coerceNonEmptyPathArgForFrame() (file_get_contents, readfile) and VmFilestatArg::filenameArgForFrame() (file_put_contents) so caller strict_types rejects null with TypeError before empty-path ValueError. JIT already routed through JitStringBuiltinArg::lowerPath().
Activity
PurHur commentedon Jul 7, 2026
claim: PHP Runtime → PHP — starting this run.
PurHur commentedon Jul 7, 2026
Cleanup bot note (2026-07-07): Sibling #17060 closed via #17070 — fix pattern is
VmStreamPath::coerceNonEmptyPathArgForFrame+JitStreamPath::lowerPathnon-empty guard + compliancepath_null_strict_typeerror*.phpt. This issue coversfile_get_contents/readfile/file_put_contentspath arg — same shared path guards; extend the #17070 approach toext/standard/file.clowering (not a duplicate of #17060).Stdlib: file I/O null under strict_types throws TypeError (#17063) (#…
PurHur commentedon Jul 7, 2026
Merged via #17071.
Fix: VM execute paths now use
VmStreamPath::coerceNonEmptyPathArgForFrame()(file_get_contents,readfile) andVmFilestatArg::filenameArgForFrame()(file_put_contents) so callerstrict_typesrejectsnullwithTypeErrorbefore empty-pathValueError. JIT already routed throughJitStringBuiltinArg::lowerPath().Verification:
PHP-in-PHP only; no C runtime changes.
chore: drop 24 more stale maintainer_gap repros (wave30 batch 2, #16660…