0

昨天我在我的页面上看到一个语法错误,然后我通过 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()函数,我没有放任何东西。我只更正了页面中间的一个字符,我收到了这个警告信息。

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

谢谢!

4

3 回答 3

4

可能存在导致发送输出的字节顺序标记。PHP 不知道 BOM,只是将其视为输出,然后发送到浏览器。

将文件另存为不带 BOM 的 utf-8 以解决此问题。

于 2012-07-02T09:01:24.450 回答
1

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

于 2012-07-02T09:02:05.183 回答
1

显然,index.php在调用session_start. 检查第 1 行的index.php空格等。

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

于 2012-07-02T09:02:20.370 回答