PHP output_buffering仅适用于error_reporting(E_ALL)问题

时间:2016-03-01 07:34:51

标签: php output-buffering ob-start

我有一个PHP脚本,这是以下内容的一部分:

SELECT distinct [ID],[MDate],STUFF((SELECT ',' + CAST(FID AS VARCHAR) FROM [dbo].[tableName] WHERE [MDate] = a.[MDate] and active =1 FOR XML PATH('')),1 ,1 ,'') as FID
  FROM [dbo].[tableName] AS a
  WHERE  active = 1
  ORDER BY [MDate]

所以问题是:ob_start()只在error_reporting设置中正常工作:

ID  MDate       FID
1   2009-03-01  1
1   2009-05-25  1,2
1   2010-02-04  3

在这种情况下,输出为“OK”,但如果我删除error_reporting,则输出“OKtest”。

问题是,我不能在生产网站上留下错误报告,我也无法弄清楚这种情况发生的原因。

可能需要更多信息?!

更新:预期的行为:sctipt以状态200和正文发送响应 - “确定”,关闭连接,然后执行一些内部操作。

1 个答案:

答案 0 :(得分:0)

以下代码不使用error_reporting

<?php
    ob_start();
    echo 'OK'; // send the OK response
    header('Connection: close');
    header('Content-Type: text/html; charset=utf-8');
    header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    header("Content-Encoding: none");
    header('Content-Length: '.ob_get_length());

    echo 'test';
    // some further procesiing

    exit;
?>

我在你最后一次回音之前删除了这个,

ob_end_flush();
ob_flush();
flush();