[php-src] Issue #20619: Autoloader doesn't work in header_register_callback() callback when an exception is being thrown

[email protected] (tgr)
Newsgroups php.bugs
Message-ID <I5iFjmI3WZpRFz38NEey7BsITEJmpawzrjDEdMXauWc@main.internal.php.net>
Issue: https://github.com/php/php-src/issues/20619
Author: tgr

### Description

The following code:

```php
<?php

spl_autoload_register( function () {
        class Autoloaded {}
} );

header_register_callback( function () {
	new Autoloaded();
} );

throw new Exception();
```

Resulted in this output:
```
PHP Fatal error:  Uncaught Error: Class "Autoloaded" not found in /path/to/foo.php:8
Stack trace:
#0 [internal function]: {closure:/path/to/foo.php:7}()
#1 {main}
  thrown in /path/to/foo.php on line 8
```

But I expected this output instead:
```
Fatal error: Uncaught Exception in /path/to/foo.php:11
Stack trace:
#0 {main}
  thrown in /path/to/foo.php on line 11
```

Seen on Wikipedia servers first on PHP 7.4 then 8.1, reported on various other versions. Could reproduce locally on 8.5. Can't reproduce it on [3v4l.org](https://3v4l.org/lT1S9) for some reason.

### PHP Version

```plain
PHP 8.5.0 (cli) (built: Nov 20 2025 19:23:30) (NTS)
Copyright (c) The PHP Group
Built by Debian
Zend Engine v4.5.0, Copyright (c) Zend Technologies
    with Zend OPcache v8.5.0, Copyright (c), by Zend Technologies
```

### Operating System

Ubuntu 24.04
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.