When does php prepare to send headers?

161 Views Asked by At

I wish to review and change headers before they are sent & also be able to stop any content from being send if headers are not to my liking or other conditions are not met.

When I set a function for header_register_callback, the headers can be adjusted perfectly. However, when using a die() statement in the callback, it does not prevent the triggering statement from being outputted. This appears only to be an issue in php 8.0.0 - 8.0.10

Looking at the description of the header register callback: "The callback is executed just after PHP prepares all headers to be sent, and before any other output is sent, creating a window to manipulate the outgoing headers before being sent."

Why does the below example still output:

In php 8.0.0 - 8.0.10, a die statement does prevent the trigger from being outputted: Trigger.

as opposed to:

In php 8.0.0 - 8.0.10, a die statement does prevent the trigger from being outputted:

<?php
    ob_start(); // make sure ob_level is set to 1

    function callback()
    {
        echo "In php 8.0.0 - 8.0.10, a die statement does prevent the trigger from being outputted: ";
        die();
    }
    header_register_callback("callback");

    ob_end_clean();
    echo "Trigger.";
    echo "Execution died before this echo statement.";

I've made a bug report about this as well on: https://bugs.php.net/bug.php?id=81431 Example snippet: https://3v4l.org/0NITj

0

There are 0 best solutions below