[php-src] Issue #22123: Exit in register_shutdown_function overwrites exit code since PHP8.4

[email protected] (PrinsFrank) Fri, 22 May 2026 11:43:44 +0000
Newsgroups php.bugs
Message-ID <[email protected]>
Issue: https://github.com/php/php-src/issues/22123
Author: PrinsFrank

### Description

The following code:

```php
<?php declare(strict_types=1);

register_shutdown_function(static function () {
    exit; // prevent further shutdown handlers from being called
});

exit(1);
```
https://3v4l.org/C9oKE#v

Results in exit code `0` since PHP8.4, while it returned the original exit code `1` in previous versions.

According to [the documentation](https://www.php.net/manual/en/function.register-shutdown-function.php), this is should be a valid way to stop shutdown_function propagation:
> If you call [exit()](https://www.php.net/manual/en/function.exit.php) within one registered shutdown function, processing will stop completely and no other registered shutdown functions will be called.


### PHP Version

```plain
8.4.1 - 8.4.18, 8.5.0 - 8.5.3 (from above sample from 3v4l.org)
```

### Operating System

_No response_