使用ob_start和ob_end_flush将CSS包含在全局文件中

时间:2013-07-29 15:20:25

标签: php ob-start

我的网站上的每个文件都包含globals.php个文件。我想在此文件中加入CSS文件globals.css

问题是,如果我在globals.php中添加CSS然后将其包含在所有文件中,我会收到一些错误:

Warning: session_start() [function.session-start]:
Cannot send session cache limiter - headers already sent (output started at /...)
in /... on line 4

或使用时

header('Location: ....');

是否有比使用同一文件底部的ob_startglobals.php顶部的ob_end_flush更合适的解决方案,或者此方法是正确的操作方式?

globals.php

<?php
ob_start();

//some costants and functions
?>

<head>
    <link href="/css/globals.css" rel="stylesheet" type="text/css">
</head>

<?php
    ob_end_flush();
?>

2 个答案:

答案 0 :(得分:2)

你在全局脚本结束时刷新缓冲区,关闭缓冲区,所以如果你有像

这样的东西
header('...'); // this will work, no output yet
include('globals.php'); // flushes buffers, stops buffering, starts output
header('...'); // fails with "headers already send"

如果在包含globals文件之后进行任何header()调用,那么全局变量 NOT 应该刷新缓冲区。

答案 1 :(得分:0)

如果您正在使用会话,请务必在执行任何其他操作之前致电session_start。错误消息表示您在完成某些输出或其他操作后尝试调用session_start