XAMPP может изменять заголовки после печати HTTP - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть XAMPP 5.6.3 в моей среде разработки.У меня проблема в том, что моя среда разработки слишком терпима.Проблема в том, что если я запусту это в моей среде разработки

echo "1";
header("Location: /homepage.php");

, то он без проблем перенаправит на домашнюю страницу.
Но если я сделаю то же самое в своей производственной среде, это выдаст общую ошибку:(Невозможно изменить информацию заголовка.)

Я хочу получить ту же фатальную ошибку в моей среде разработки.

Заранее спасибо!

1 Ответ

0 голосов
/ 24 сентября 2019

Вам необходимо включить сообщение об ошибке, чтобы получить ошибку.Вы можете сделать это из кода или изменив php.ini

Из кода

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Или найдите файл php.ini в каталоге xampp / php и измените эти строки

display_errors=On
error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT

Вы можете выбрать любую другую константу уровня ошибок. Вы также можете проверить этот ответ. Как мне отобразить ошибки PHP?

Редактировать: Вы можете использовать функцию set_error_handler, чтобы изменить поведение ошибок по умолчанию,Вот документация для этой функции https://www.php.net/manual/en/function.set-error-handler.php Вот пример кода, который делает предупреждение фатальным

function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    if (!(error_reporting() & $errno)) {
        // This error code is not included in error_reporting, so let it fall
        // through to the standard PHP error handler
        return false;
    }

    switch ($errno) {
        case E_WARNING: 
        case E_USER_ERROR:
            echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
            echo "  Fatal error on line $errline in file $errfile";
            echo ", PHP ".PHP_VERSION." (".PHP_OS.")<br />\n";
            echo "Aborting...<br />\n";
            exit(1);
            break;

        case E_USER_WARNING:
            echo "<b>My WARNING</b> [$errno] $errstr<br />\n";
            break;

        case E_USER_NOTICE:
            echo "<b>My NOTICE</b> [$errno] $errstr<br />\n";
            break;

        default:
            echo "Unknown error type: [$errno] $errstr<br />\n";
            break;
    }

    /* Don't execute PHP internal error handler */
    return true;
}
error_reporting(E_ALL);
set_error_handler("myErrorHandler");
...