如何在php中包含文件时忽略会话警告

时间:2010-11-08 06:28:42

标签: php wordpress

当我在我的wordpress插件中使用include()时会发出如下错误。

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/wordpress3/wp-content/plugins/new/listAllItems.php:10) in /var/www/wordpress3/wp-content/themes/thesis_16/lib/functions/document.php on line 3

listallitems.php的第10行说

`

    include_once("../../../wp-config.php");
    include_once("../../../wp-load.php");
     ....` 

如何避免此错误。

4 个答案:

答案 0 :(得分:1)

如前所述,这是由于在session_start()语句之前已经发送到浏览器的一些文本。检查脚本中是否包含空格/字符,或者是否包含其中一个脚本。

这也可能是编码问题,即您的文件使用BOM编码为UTF-8,但您的网络服务器是在另一个字符集中配置的,因此BOM被视为额外字符(但这个问题确实得到了很多回答)次)。

答案 1 :(得分:1)

这只是一个快速解决方案,而不是正确的解决方案。

在命令前放置一个“@”符号,如下所示......

@session_start();

这将抑制任何警告或错误。您可以使用任何PHP命令执行此操作。但是一般来说这不是一个好主意,因为你只是在这个问题上放了一个创可贴,而没有解决根本原因,在你的情况下,在输出到缓冲区之后会调用session_start()

答案 2 :(得分:1)

我刚刚在我的剧本中添加了:

if(!session_start()){
  session_start();
}

所有警告都消失了。

答案 3 :(得分:0)

通常在会话启动功能之前有输出时会出现此错误。有时甚至是空格或小字符,文件编码问题。