CakeFest 2024: The Official CakePHP Conference

Настройка во время выполнения

Поведение этих функций зависит от установок в php.ini.

Конфигурационные опции управления выводом
Имя По умолчанию Место изменения Список изменений
output_buffering «0» INI_PERDIR  
output_handler null INI_PERDIR  
implicit_flush «0» INI_ALL  
url_rewriter.tags «form=» INI_ALL Начиная с PHP 7.1.0 эта INI-настройка влияет только на функцию output_add_rewrite_var(). До PHP 7.1.0 эта INI-настройка включала поддержку прозрачного идентификатора сеанса (смотрите описание директивы session.trans_sid_tags). функцию .
url_rewriter.hosts $_SERVER['HTTP_HOST'] задано значением по умолчанию. INI_ALL Доступно с PHP 7.1.0
Дополнительная информация и описания режимов INI_* даны в разделе «Места установки параметров конфигурации».

Краткое разъяснение конфигурационных директив.

output_buffering bool/integer

Чтобы включить буферизацию вывода для всех файлов, директиве устанавливают значение «On». Чтобы ограничить размер буфера, вместо «On» можно указать число, которое будет соответствовать количеству байтов, ограничивающих размер буфера. Например — output_buffering=4096.

output_handler string

Разрешено перенаправлять вывод скриптов в функцию. Например, если установить функцию mb_output_handler() в качестве значения директивы output_handler, кодировка символов будет прозрачно преобразовываться в заданную кодировку. Установка любого обработчика вывода автоматически включает буферизацию вывода.

Замечание:

Нельзя использовать вместе функции mb_output_handler() и ob_iconv_handler(), а функцию ob_gzhandler() и директиву zlib.output_compression нельзя использовать ни с одним из следующих: с функцией mb_output_handler(), с функцией ob_gzhandler(), с директивой zlib.output_compression, с обработчиком «URL-Rewriter» (смотрите описание директивы session.use_trans_sid и функции output_add_rewrite_var()).

Замечание:

С директивой разрешено использовать только встроенные функции. Для пользовательских функций вызывают функцию ob_start().

implicit_flush bool

Значение по умолчанию — false. Изменение значения на true указывает PHP не сохранять данные в буфер, а после каждого отправленного блока автоматически отправлять данные в выходной слой. Это эквивалентно вызову PHP-функции flush() после каждого вызова функции вывода (например, print или echo) и каждого HTML-блока.

При использовании PHP в веб-среде, включение этой опции приведёт к серьёзной потере производительности, поэтому рекомендуется использовать её только для отладки. Это значение по умолчанию имеет true при работе в CLI SAPI.

Сморите также ob_implicit_flush().

url_rewriter.tags string
Директива url_rewriter.tags определяет HTML-теги и атрибуты, в которых URL-адреса перезаписываются значениями функции output_add_rewrite_var(). Значение по умолчанию — «form=». Добавление значения «form=» или любого атрибута формы (form) добавит скрытый элемент input к форме (form), с артибутом с указанными именем и значением для каждой пары имя-значение, переданной в функцию output_add_rewrite_var().
Предостережение

Если в директиву url_rewriter.tags добавить один и тот же тег больше одного раза, при перезаписи URL будет обработано только первое вхождение.

Замечание: До PHP 7.1.0 надо было использовать url_rewriter.tags для указания session.trans_sid_tags.

url_rewriter.hosts string
Директива url_rewriter.hosts указывает, какие хосты перезаписываются, чтобы включить в них значения функции output_add_rewrite_var(). По умолчанию директиве установлено значение $_SERVER['HTTP_HOST']. Разрешено указывать несколько хостов, перечислив их через запятую без пробелов. Например, «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