UTF-8 BOM导致的Session无法启动问题

BOM的全称是byte-order mark , 它是在Unicode编码的文件首部用于表示文件编码类型的一个特殊字符,对于UTF-8编码来说,它的值是0xEFBBBF。这个字符是不可见的,大多数文本编辑器都不会把它显示出来,对于一般的PHP程序,它的存在也不会影响脚本的正常执行。只有一种情况例外——需要发送HTTP首部的时候。

因为它总是存在于文件的首部,自然也就在<?php标记之前。所以使用Session、Cookie以及Header的时候,会导致错误。系统会认为页面内容已经发送。

解决这个问题的办法是使用一些支持取消BOM标记的编辑工具,将BOM标记删除。