PHP输出缓冲区检查?

3

可能重复的问题:
PHP - 如何检测输出缓冲是否已打开

在PHP中如何检查是否设置了output_buffering?我需要解决一个网站的问题,但无法访问托管面板。

类似于:

if(output_buffering == 'On')
{
    echo 'It is On';
}
else
{
    echo 'It is NOT On';
}

谢谢!

2个回答

11
if(ob_get_level() > 0){
   //there are some buffers active.
}


$ php -d output_buffering=1 -r'var_dump(ob_get_level());'
int(1)
$ php -d output_buffering=0 -r'var_dump(ob_get_level());'
int(0)

它确实检查是否存在输出缓冲区,而不是 PHP 本身的实际设置。手动的ob_start()(一个或多个)也会增加级别。通常这比实际的output_buffering设置更有趣。如果你真的需要那个,请使用ini_get答案。


2

你应该可以使用ini_get()来完成这项任务。我没有测试过,但我非常确定它可以满足你的需求,因为ini_get()用于检查php.ini选项。


如果使用 if(ini_get('output_buffering')) { echo 'it is on'; } 进行测试,它应该能够正常工作。 - Bogdan Constantinescu
如果你从脚本内开始输出缓冲,会怎么样呢? ini_get('output_buffering') => false; ob_start(); ini_get('output_buffering') => false; - chriso
问题是关于php.ini设置,正如您所看到的。无论如何,在您指定的情况下,Wrikken的答案肯定是金光闪闪的! - Bogdan Constantinescu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接