今天编写PHP程序的时候碰到了这样的问题,在网页开头出现这样的错误:Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\www\index.php:1) in C:\www\index.php on line 2,这样的错误,找了很久没找到错在哪里,一个网页好好的就改了几个无关紧要的地方就造成了这样的错误。网上有人说session_start() 前面不能任何输出,我检查了一下应该是没有输出的,这句话我都放最开头了。有人说要改php.ini的参数,但是我网页修改前可以的,且也包含这句话,所以肯定不是出在服务程序上。经过反复查找终于用EditPlus找出是编码出了问题,经过编辑器修改之后,文本编码由UTF-8变为了UTF-8 + BOM,只要把文件另存为,编码修改成UTF-8就可以了。

 

原因分析:

包括 Unicode 签名 (BOM) 可在文档中包括字节顺序标记 (BOM)。BOM 是位于文本文件开头的 2 到 4 个字节,可将文件标识为 Unicode,如果文件编码为UTF-8 + BOM,就会在页面的最前面输出2到4个字节,这样session_start()前面就由文本输出了,所以就造成了这个错误。