output_buffering和php.ini有问题

时间:2009-04-21 18:13:28

标签: php output-buffering

尝试登录此site(用户:polopolo,传递:samara)时,结果为空白页。我知道问题出在php.ini文件中发送头文件和 ouput_buffering 。我在另一台主机上遇到了同样的问题,但是当我更改了 output_buffering = On 时问题得到解决。它不适用于当前主机,我想知道为什么?有什么建议?

- 当前网站的phpinfo


编辑: 问题解决了。我对代码进行了反向工程,并在发送标头之前在php结束标记之后找到了一些额外的空格。代码不是由我编写的,我本能地忽略了这个选项,因为整个系统已经在另一台服务器上工作了。但我的同事做了一些我不知道的改变......所吸取的教训是:团队合作很重要,不要让任何人为你做思考。对我来说,在尝试显示错误的所有内容之后仍然是一个谜,特别是“无法修改标题”它们无法正常显示。我做了你建议我做的一切 - 显示错误,记录它们等等......无论如何,谢谢。

3 个答案:

答案 0 :(得分:4)

据推测,登录后立即点击的页面会进行重定向。

执行重定向需要输出带有响应的HTTP标头。问题是,如果PHP已经开始输出文档的 body ,则它无法输出标题,因为它们在正文开始时标题结束。

输出缓冲可防止PHP输出文档的 body 的任何部分,直到刷新输出缓冲区(或退出PHP)。这允许您随时输出标题。

现在,如果转动输出缓冲修复了自己的站点/服务器上的问题,而不是另一个问题,这清楚地表明它实际上不是同一个问题 - 你遇到了不同的问题。

您应该记录PHP错误,因此请检查您的PHP错误日志。如果(并且仅当)您在受限制的仅限开发人员的站点(您不是)上查看此内容,则可以在PHP配置中启用display_errors,这将在呈现时在页面上显示错误。这通常被认为是可公开访问的服务器上的不安全设置,因为攻击者可能会尝试导致错误消息显示某些私人信息。

答案 1 :(得分:1)

我不是专家,我无法理解输出缓冲是什么,可能代码中有一些错误?

您是否可以使用以下内容创建.htaccess文件:

php_flag display_errors on
php_value error_reporting 30719

将其放在该网站的根文件夹中,然后尝试再次登录以查看是否有任何输出错误?

答案 2 :(得分:0)

我在处理项目时遇到了同样的问题。我稍后通过设置修复它 在php.ini配置文件中output_buffering = 4096,它在localhost中工作正常,但是当我把它放在主机服务器上时,我又遇到了这个错误。我不知道如何在主机服务器上使用我自己的php.ini配置文件。欢迎提出任何建议......