PHPerKaigi 2021

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" PHP_INI_PERDIR  
output_handler NULL PHP_INI_PERDIR  
implicit_flush "0" PHP_INI_ALL  
url_rewriter.tags "a=href,area=href,frame=src,form=,fieldset=" PHP_INI_ALL Vor PHP 7.1.0 wurde dies für das URL-Rewriting verwendet, wenn die transparente SID der Session aktiviert war. Von PHP 7.1.0 an wird es nur noch von output_add_rewrite_var() verwendet.
url_rewriter.hosts $_SERVER['HTTP_HOST'] wird als Voreinstellung verwendet. PHP_INI_ALL Verfügbar von PHP 7.1.0 an
Weitere Details und die Definitionen der PHP_INI_*-Konstanten finden Sie im Wo Konfigurationseinstellungen gesetzt werden können.

Hier eine kurze Erklärung der Konfigurationsoptionen:

output_buffering bool/int

Sie können die Ausgabepufferung für alle Skripte aktivieren, indem Sie diesen Wert auf 'On' setzen. Wenn Sie die Größe des Puffers limitieren wollen, so können Sie die maximale Größe in Bytes an Stelle von 'On' angeben (z.B. output_buffering=4096). Dieser Wert ist für den PHP-CLI-Kommandozeileninterpreter grundsätzlich 'Off'.

output_handler string

Sie können die Ausgaben Ihres Skriptes an eine Funktion weiterleiten. Wenn sie z.B. mb_output_handler() als output_handler setzen, wird die Zeichenkodierung transparent in die angegebene Kodierung umgewandelt. Das Setzen einer beliebigen Ausgabesteuerung aktiviert die Ausgabepufferung automatisch.

Hinweis:

Sie können mb_output_handler() nicht gleichzeitig mit ob_iconv_handler() und ob_gzhandler() nicht gleichzeitig mit zlib.output_compression. benutzen.

Hinweis:

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

implicit_flush bool

Diese Option ist standardmäßig false. Wenn Sie implicit_flush auf true setzen, wird PHP angewiesen, den Ausgabepuffer nach jedem Ausgabeblock automatisch zu leeren. Dies ist äquivalent zu flush()-Aufrufen nach jedem print- oder echo-Aufruf und nach jedem HTML-Block.

In Webanwendungen hat diese Option massive Performanceauswirkungen und wird im Allgemeinen nur für Debugging-Zwecke empfohlen. Im CLI SAPI-Modus (Kommandozeileninterpreter) dagegen ist diese Option standardmäßig true.

Siehe auch ob_implicit_flush().

url_rewriter.tags string
url_rewriter.tags gibt an, welche HTML-Tags durch output_add_rewrite_var() umgeschrieben werden. Die Voreinstellung ist a=href,area=href,frame=src,input=src,form= form ist ein besonderes Tag. <input hidden="session_id" name="session_name"> wird als Formular-Variable hinzugefügt.

Hinweis: Vor PHP 7.1.0 wurde url_rewriter.tags verwendet, um session.trans_sid_tags anzugeben. Von PHP 7.1.0 an wird fieldset nicht länger als besonderes Tag angesehen.

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 durch "," angegeben werden, z.B. php.net,wiki.php.net,bugs.php.net. Zwischen den Hosts ist kein Leerzeichen erlaubt.

add a note add a note

User Contributed Notes 1 note

up
3
support at losalgendesign dot com
7 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