PHP输出缓冲

8

如何在PHP脚本中或使用htaccess文件开启输出缓冲的方法是什么?

我在应用程序根目录下的htaccess文件中使用以下方法:

php_value output_buffering On
php_value output_handler mb_output_handler

在我其中一个共享主机帐户上(使用PHP 5.2.x的Linux主机),以上代码会产生空白页面。技术支持说他们无法在php.ini文件中启用它,但我可以在我的脚本中启用它... ob_start()ob_end_flush()也产生相同的结果。我该怎么办?

1
如果您得到了空白页面,请查看“error.log”。在激活mb_output_handler之前,您是否设置了输出编码 - mario
@mario,不,我不知道我需要这样做。我该怎么做? - anon445699
2
如果您想删除此内容,请标记给管理员处理(就像我刚才所做的那样)。请停止回滚,这只会在我们的主页上放置无意义的内容 :( - Tim Post
2个回答

7

使用ob_start()ob_end_flush()

在脚本的开头使用ob_start(),在任何输出之前(即使是一个空格)。

当您想要输出时,请使用ob_end_flush()


2
今天已经看到这个东西第二次了。您可以在打印内容之前或之后打开输出缓冲区,这没有任何区别。http://ideone.com/URuKl - profitphp
当然会有影响。如果你在没有开启输出缓冲的情况下打印内容,它实际上会被输出。 - JW.
@klinky 我并不是在展示 ob,我只是想证明你可以在任何时候调用它,而不仅仅是在输出之前的开头,就像 predrag.music 所说的那样。 - profitphp
@jw 这确实有所区别,但不会导致程序崩溃或无法工作,这似乎是他的意思。我认为人们会将其与调用头函数混淆,因为通常人们会使用输出缓冲区来确保可以使用头函数。 - profitphp

2

检查您的PHP.ini文件并确保启用了输出缓冲。

之后,您可以在需要开始缓冲时使用ob_start(),并在需要停止缓冲时使用ob_flush()来刷新缓冲区。


1
如果您使用cPanel(大多数主机都是),那里有一个选项可以更改php.ini配置。 - user509006
1
FYI,Scott,我使用的是共享主机hostmonster.com,但我仍然可以编辑自己的php.ini文件。 - justinl
@justinl,我知道你的意思,在我的大多数账户上我也可以做到同样的事情 - 但并非全部。 - anon445699
很不幸 :S 我不确定为什么那些其他方法对你不起作用。 - justinl

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