CakeFest 2024: The Official CakePHP Conference

Laufzeit-Konfiguration

Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.

Konfigurationsoptionen für die Ausgabekontrolle
Name Standard Veränderbar Changelog
output_buffering "0" INI_PERDIR  
output_handler null INI_PERDIR  
implicit_flush "0" INI_ALL  
url_rewriter.tags "form=" INI_ALL Seit PHP 7.1.0 wirkt sich diese INI-Einstellung nur auf die Funktion output_add_rewrite_var() aus. Vor PHP 7.1.0 konnte damit die Unterstützung für transparente Session-IDs aktiviert werden (siehe session.trans_sid_tags).
url_rewriter.hosts $_SERVER['HTTP_HOST'] INI_ALL Verfügbar von PHP 7.1.0 an
Weitere Details und die Definitionen der INI_*-Konstanten sind unter Wo Konfigurationseinstellungen gesetzt werden können zu finden.

Hier eine kurze Erklärung der Konfigurationsoptionen:

output_buffering bool/int

Die Ausgabepufferung für alle Dateien kann aktiviert werden, indem diese Direktive auf "On" gesetzt wird. Um die Größe des Puffers zu begrenzen, kann anstelle von "On" eine Zahl angegeben werden, die der maximal zulässigen Anzahl von Bytes entspricht. (z. B. output_buffering=4096). Diese Direktive ist für den PHP-CLI-Kommandozeileninterpreter grundsätzlich "Off".

output_handler string

Die Ausgaben eines Skripts kann an eine Funktion weitergeleitet werden. Wenn output_handler z. B. auf mb_output_handler() gesetzt wird, wird die Zeichenkodierung transparent in die angegebene Kodierung umgewandelt. Durch das Setzen einer beliebigen Ausgabesteuerung wird die Ausgabepufferung automatisch aktiviert.

Hinweis:

Die Funktionen mb_output_handler() und ob_iconv_handler() können nicht zusammen verwendet werden und die Funktion ob_gzhandler() und die Direktive zlib.output_compression können nicht zusammen mit einer der folgenden Funktionen und Direktiven verwendet werden: mb_output_handler(), ob_gzhandler(), zlib.output_compression und "URL-Rewriter"-Handler (siehe session.use_trans_sid und output_add_rewrite_var()).

Hinweis:

Es können nur eingebaute Funktionen mit dieser Direktive verwendet werden. Benutzerdefinierte Funktionen können mit Hilfe der Funktion ob_start() genutzt werden.

implicit_flush bool

Diese Option ist standardmäßig false. Wenn implicit_flush auf true gesetzt wird, wird PHP angewiesen, den Ausgabepuffer nach jedem Ausgabeblock automatisch zu leeren. Dies entspricht dem Aufruf der Funktion flush() nach jedem Aufruf einer Funktion, die eine Ausgabe erzeugt (wie print oder echo) und nach jedem HTML-Block.

In Webanwendungen führt diese Option zu erheblichen Leistungseinbußen und wird im Allgemeinen nur für Debugging-Zwecke empfohlen. In der CLI-SAPI (Kommandozeileninterpreter) dagegen ist diese Option standardmäßig true.

Siehe auch ob_implicit_flush().

url_rewriter.tags string
url_rewriter.tags definiert die HTML-Tags und Attribute, in welchen URLs durch output_add_rewrite_var() umgeschrieben werden. Die Voreinstellung ist "form=". Durch Hinzufügen des Wertes "form=" oder eines beliebigen form-Attributs wird form ein verstecktes input-Element hinzugefügt, das für jedes an output_add_rewrite_var() übergebene Name-Wert-Paar ein Name- und ein Wert-Attribut enthält.
Achtung

Wird dasselbe Tag mehr als einmal zu url_rewriter.tags hinzugefügt, wird nur der erste Eintrag beim Umschreiben der URL verwendet.

Hinweis: Vor PHP 7.1.0 wurde url_rewriter.tags verwendet, um session.trans_sid_tags anzugeben.

url_rewriter.hosts string
url_rewriter.hosts gibt an, welche Hosts umgeschrieben werden, um output_add_rewrite_var()-Werte aufzunehmen. Standardmäßig ist das $_SERVER['HTTP_HOST']. Mehrere Hosts können mit einer durch Kommas getrennte Liste angegeben werden, die keine Leerzeichen enthält, z. B. "php.net,wiki.php.net,bugs.php.net".

add a note

User Contributed Notes 1 note

up
5
support at losalgendesign dot com
10 years ago
Using "OFF" or no value on output_buffering will disable header modifications, like redirects or content-type or content-disposition resulting in the error we commonly attribute to output before header modifications:

Warning: Cannot modify header information - headers already sent by (output started at C:\PATH\filename.php:1) C:\PATH\filename.php on line 1

Example code with output_buffering = OFF which results in this behavior. Changing it to "ON" or giving it a value will likely cause normal behavior.

<?php header("Location: http://www.php.net"); ?>

or

<?php header("Content-Type: text/Calendar"); ?>
<?php header
("Content-Disposition: inline; filename=appointment.ics"); ?>
To Top