警告:session_start()但没有空格,它在第一行

时间:2012-07-02 08:59:07

标签: php session warnings

昨天我在我的页面上看到一个语法错误,然后我通过FTP连接到Web服务器并编辑了index.php文件(我看到了错误),我在页面中间修正了一个单词,然后我救了它。我刷新了页面,并在页面顶部看到以下警告消息:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ../index.php:1) in /home/../public_html/../index.php on line 2

好的,我知道这意味着什么,标题已经发送了。 session_start()前面没有空格,没有包含,没有任何内容。我将ob_start()放在函数session_start()的前面,但我收到了相同的警告消息。

具有讽刺意味的是,我没有编辑或修改session_start()功能,我没有在那里放任何东西。我只纠正了页面中间的一个字符,我收到了这条警告信息。

我不知道该怎么办。谁能帮我?建议请!

谢谢!

3 个答案:

答案 0 :(得分:4)

可能有Byte Order Mark导致输出发送。 PHP不知道BOM,只是将其视为输出,然后将其发送到浏览器。

将文件保存为utf-8而不使用BOM来解决此问题。

答案 1 :(得分:1)

FTP客户端PC是Windows PC并且是保存为UTF-8的PHP文件吗?编辑器可能已经预先添加了BOM doesn't understand。您可以使用十六进制编辑器删除它并删除前三个字节,或者在不添加BOM的编辑器中再次保存文件,例如Notepad ++。

答案 2 :(得分:1)

显然,在调用index.php之前,您已在第1行的session_start中向浏览器发送了一些输出。检查index.php的第1行是否有空格等。

最可能的原因是您使用某些Windows文本编辑器编辑了index.php,由于某种原因,您认为您的文件采用UTF-8编码并在其开头放置了BOM 。 PHP不会以任何特殊方式处理BOM,因此这些字节直接进入浏览器,导致标题结束。