输出缓冲使进一步的代码出错


Output buffering incorrects further code

目前我有一个动态的CSS文件,由PHP从数据库中的结果完成。目前,我正在使用输出缓冲将动态文件转换为静态文件。转换为静态文件的工作原理类似于符咒,但操作是从jQuery对话框窗口调用的。操作完成后,打印一小段HTML来关闭对话框。

问题就在这里。HTML代码被打印出来,而不是被解析。我相信这是因为输出缓冲。当我注释缓冲代码时,一切又正常了。

谁能告诉我出什么事了?

使用的代码是:

ob_start();
$MC_ParseTemplateCall = 1;  # is used in the include to set some values         
require_once($Template); # Template contains the path and filename
$templateCss = ob_get_contents(); #using this to store it with fopen, fwrite & fclose
ob_end_clean();

附加信息:

从save.php这样的文件(在jQuery对话框中执行)

<?php
    // stuff to save template related settings happens above
    # Make a static CSS file
    ParseAndStoreTemplate(DIR_PATH_TO_ROOT."../website/Templates/MyTpl2011/CSS/MyTpl2011.php");
?>
<html>
    <body onLoad="window.parent.CloseDialog();"></body>
</html> 

存储模板的函数:

function ParseAndStoreTemplate($Template)
{
    if(is_file($Template))
    {
        ob_start();
        $MC_ParseTemplateCall = 1;              
        require_once($Template);
        $templateCss = ob_get_contents();
        ob_end_clean();
        $fileName   = end(explode("/", $Template));
        $templateName   = reset(explode(".php", $fileName));
        $websitePath    = DIR_PATH_TO_ROOT."../Global/Files/Website/".$GLOBALS["WebsiteId"]."/";
        $templateFolder = "CSS";
        if(!is_dir($websitePath.$templateFolder))
            mkdir($websitePath.$templateFolder);
        file_put_contents(  
            $websitePath.$templateFolder."/".$templateName,
            $templateCss);
    }
    else
        die("<strong>Opgegeven templatebestand bestaat niet</strong>: ".$Template);
}

早就知道了。在输出缓冲期间,Content-Type报头似乎发生了变化。在告诉浏览器它应该表现得像一个文本/html页面之后,对话框又像它应该的那样关闭了。谢谢!