php:ob_end_flush()阻止header()工作

时间:2015-02-10 16:52:50

标签: php http http-headers

我已阅读有关此特定主题的其他主题,但我相信ob_end_flush()会生成空格。

  1. 在我的代码中,如果我在调用ob_end_flush()之前使用header()标题,
  2. 如果删除了前导header()并在调用ob_end_flush()之后将其放入,则标题无法执行。
  3. 在后一种情况下,我检查页面(FireFox中的Control-U)并看到一个空行
  4. 以下是 BOTH 标头调用的代码。再次,前导头工作,但如果我删除第一个标头ob_end_flush()之后的标头失败。

    header('location:administrative page.php');  //-- return
    
    ob_end_flush();
    
    header('location:administrative page.php');  //-- return
    

    问题无法与我的“问题区域”代码上方或下方的任何未检测到的前导或尾随空白区域相关,因为第一个标题有效。

    有什么想法吗? ======================================== addendum 2/12/2015 感谢两位回复...... 在充满挑战的时候,我需要更加关注我的错误日志......

    对我来说,“惊喜”显然是ob_end_flush()启动了一个标题发送,因此阻止了“我的”后续标题结构。 第101行是:ob_end_flush(); 第105行是:header('location:administrative page.php');

    20150212T083215: www.summersessiondevelopment.com/report.php 
    

    PHP警告:无法修改标题信息 - 已经发送的标题(输出在/hermes/waloraweb026/b1614/moo.aassdevelopmentcom/report.php:101开始)/hermes/waloraweb026/b1614/moo.aassdevelopmentcom/report。第105行的PHP

    所以,我的任务是现在找到在使用fclose($ fp)关闭文件之前刷新fputcsv()缓冲区的确定方法,而不使用ob_end_flush();

    我使用暴力方法试图找到一种方法来刷新缓冲区,所以我将检查是否删除ob_end_flush()并仅使用:

    ob_flush();
    flush();
    fclose($fp);
    

    诀窍。

    再次感谢你们!

1 个答案:

答案 0 :(得分:1)

ob_end_flush输出缓冲区。在致电header之前,您无法获得任何输出。

如果您需要存储结果以便稍后显示,请改用ob_get_flush

请参阅文档并考虑检查PHP错误日志。