php.ini中output_buffering的值1和4096有什么区别

ACs*_*ACs -5 php output-buffering

output_bufferingini 变量的值在 php.ini中到底是什么意思?在我们的旧服务器上,它被设置为 1

output_buffering = 1
Run Code Online (Sandbox Code Playgroud)

有了这个设置,我可以打电话ob_clean();,它就像一个魅力。但是,我们将系统移到了输出缓冲设置为 4096 的新服务器上:

output_buffering = 4096
Run Code Online (Sandbox Code Playgroud)

有了这个,调用ob_clean();没有任何效果,直到我明确地开始我的代码的开头ob_start();(似乎在另一台具有 output_buffering=1 的服务器上它被隐式调用)。

Mar*_*tin 6

output_buffering 布尔值/整数

您可以通过将此指令设置为“On”来为所有文件启用输出缓冲。如果您希望将缓冲区的大小限制为特定大小 - 您可以使用最大字节数而不是“On”作为该指令的值(例如,output_buffering=4096)。该指令在 PHP-CLI 中始终处于关闭状态。

来自PHP 手册

这意味着:

  • 的值为0false/off,因此禁用输出缓冲。
  • 的值为1true/on,以便启用输出缓冲并且没有设置限制(至少在此范围内)到最大缓冲区大小。
  • >1是自定义输出缓冲区大小的最大字节数。

因此,PHP.ini 配置中的上述选项是:

    output_buffering= 0 / 1 / 1+
Run Code Online (Sandbox Code Playgroud)