Problem mit HTTP-Antwortheadern in PHP

Nach den HTTP-Regeln werden zuerst die HTTP-Header gesendet und dann der HTTP-Antwortkörper. Deshalb hat die Arbeit mit der Funktion header in PHP ihre Besonderheiten.

Die Sache ist die, dass wenn vor dem Aufruf dieser Funktion eine Ausgabe auf den Bildschirm erfolgt, diese als Beginn des Antwortkörpers interpretiert wird. In diesem Fall führt der Aufruf der Funktion header zu einer PHP-Warnung mit dem Text headers already sent. Dabei können die Header sogar gesendet werden. Es kann sogar sein, dass der Fehler nicht ausgegeben wird (hängt von den PHP-Einstellungen ab). Aber meistens wird das nur lokal passieren, und wenn die Website im Internet veröffentlicht wird, bricht alles zusammen.

Unter Ausgabe auf den Bildschirm wird jeder Text verstanden. Zum Beispiel so:

phptext
<?php
  header('Content-Type: text/html');
?>

Oder eine leere Zeile:

php     
<?php
  header('Content-Type: text/html');
?>

Oder ein Leerzeichen:

php <?php
  header('Content-Type: text/html');
?>

Oder ein Tag:

html<div>
  <?php
    header('Content-Type: text/html');
  ?>
</div>

Oder Ausgabe via echo:

php<?php
  echo 'abc';
  header('Content-Type: text/html');
?>

Oder Ausgabe via var_dump:

php<?php
  $str = 'abc';
  var_dump($str);
  
  header('Content-Type: text/html');
?>

Sogar PHP-Warnungen sind Ausgaben auf den Bildschirm. Im folgenden Beispiel wird absichtlich auf eine nicht existierende Variable zugegriffen, was zur Ausgabe einer Warnung führt:

php<?php
  $text += 1;
  header('Content-Type: text/html');
?>

Aufgetrennte PHP-Klammern erzeugen ebenfalls Ausgabe auf den Bildschirm:

php<?php
  echo 'abc';
?>
<?php
  header('Content-Type: text/html');
?>
Задание 1

Erzeugen Sie absichtlich eine Ausgabe auf den Bildschirm vor der Funktion header. Studieren Sie den Text des auftretenden Fehlers.

Задание 2

Korrigieren Sie den Fehler, der in diesem Code gemacht wurde:

html<!DOCTYPE html>
<html>
  <head>
    <?php
      header('Content-Type: text/html');
    ?>
  </head>
  <body>
    text
  <body>
<html>