昨天我在我的页面上看到一个语法错误,然后我通过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()
功能,我没有在那里放任何东西。我只纠正了页面中间的一个字符,我收到了这条警告信息。
我不知道该怎么办。谁能帮我?建议请!
谢谢!
答案 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,因此这些字节直接进入浏览器,导致标题结束。