What Output Is Buffered?

PHP's user-level output buffers buffer all output after they are started until they are turned off or the script ends. Output in the context of PHP's user-level output buffer is everything that PHP would display or send back to the browser. In practical terms, output is non-zero length data that is:

  • outside of the <?php ?> tags
  • printed by language constructs and functions whose explicit purpose is to output user provided variables or strings such as echo, print, printf, var_dump, var_export, vprintf
  • printed by functions whose purpose is to collect and output data/information on the running script or PHP such as debug_print_backtrace, phpcredits, phpinfo, ReflectionExtension::info
  • printed by PHP on an uncaught exception or an unhandled error (subject to the settings of display_errors and error_reporting)
  • anything written to php://output

Note: Data that is written directly to stdout or passed to an SAPI function with a similar functionality will not be captured by user-level output buffers. This includes writing data to stdout with fwrite or sending headers using header or setcookie.