PHP Sadness

(<5.4) The ob_start() function doesn't allow for a buffer length of 1 ("special value" for 4096)

This bug was fixed as of PHP 5.4 after a discussion on the mailing list.

You cannot use a $chunk_size of 1 in php ob_start:

/* {{{ php_start_ob_buffer
 * Start output buffering */
PHPAPI int php_start_ob_buffer(zval *output_handler, uint chunk_size, zend_bool erase TSRMLS_DC)
	uint initial_size, block_size;

	if (OG(ob_lock)) {
		if (SG(headers_sent) && !SG(request_info).headers_only) {
			OG(php_body_write) = php_ub_body_write_no_header;
		} else {
			OG(php_body_write) = php_ub_body_write;
		OG(ob_nesting_level) = 0;
		php_error_docref("ref.outcontrol" TSRMLS_CC, E_ERROR,
			"Cannot use output buffering in output buffering display handlers");
		return FAILURE;
	if (chunk_size > 0) {
		if (chunk_size==1) {
			chunk_size = 4096;
		initial_size = (chunk_size*3/2);
		block_size = chunk_size/2;
	} else {
		initial_size = 40*1024;
		block_size = 10*1024;
	return php_ob_init(initial_size, block_size, output_handler, chunk_size, erase TSRMLS_CC);
/* }}} */

Significance: Consistency

Language consistency is very important for developer efficiency. Every inconsistent language feature means that developers have one more thing to remember, one more reason to rely on the documentation, or one more situation that breaks their focus. A consistent language lets developers create habits and expectations that work throughout the language, learn the language much more quickly, more easily locate errors, and have fewer things to keep track of at once.