Skip to content

Fix unlink/rename php:// wrapper warning text (#18404)#18414

Merged
PurHur merged 1 commit into
masterfrom
agent/issue-18404-unlink-rename-php-wrapper
Jul 12, 2026
Merged

Fix unlink/rename php:// wrapper warning text (#18404)#18414
PurHur merged 1 commit into
masterfrom
agent/issue-18404-unlink-rename-php-wrapper

Conversation

@PurHur

@PurHur PurHur commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add VmFsPhpWrapper SSOT for php:// stream wrapper unlink/rename rejection messages (php-src main/streams/userspace.c).
  • Short-circuit VmFsUnlinkPure / VmFsPathPure::rename for php:// URIs before host @unlink/@rename so ENOENT paths are not used.
  • Wire VM (VmFilestatFailure) and JIT (UnlinkJitHelper, RenameJitHelper) to emit Zend-equivalent warnings.

Closes #18404

php-src reference

  • main/streams/userspace.c — wrapper unlink/rename handlers
  • ext/standard/filestat.cphp_unlink / php_rename

Verification

./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
php test/repro/maintainer_gap_unlink_rename_php_wrapper_warning.php
php bin/vm.php test/repro/maintainer_gap_unlink_rename_php_wrapper_warning.php
vendor/bin/phpunit test/compliance/VMTest.php --filter "stdlib/unlink_rename_php_wrapper_warning"
php script/check-selfhost-spine-coverage-sync.php'

Output (VM matches Zend):

unlink=false
rename=false
warnings=unlink(): PHP does not allow unlinking|rename(): PHP wrapper does not support renaming
...
OK (1 test, 1 assertion)
check-selfhost-spine-coverage-sync: OK (spine covers all 4703 inventory files)

Made with Cursor

Route php:// stream wrapper failures through VmFsPhpWrapper so VM/JIT emit Zend-equivalent messages instead of generic ENOENT paths.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur PurHur merged commit 65a5c8f into master Jul 12, 2026
1 check failed
@PurHur PurHur deleted the agent/issue-18404-unlink-rename-php-wrapper branch July 12, 2026 23:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Regression: unlink()/rename() on php:// URIs — ENOENT warning not wrapper message (ext/standard/filestat.c)

1 participant