并不是说session_start()必须放在第一行,而是要保证在使用它之前,没有向浏览器输出过任何内容。检查session_start()之前,是否已向浏览器输出过内容,这个输出内容包括html标签,如<html>、<body>。   如果使用基于cookie的session(cookie-based sessions),那么在使用Session_start()之前浏览器不能有任何输出,否则会出现"Cannot send session cache limiter – headers already sent"错误,所以首先要确保Session_start()在开始输出之前执行,一般直接放到php文件的最上方.

 

   如果Session_start()已经在文件的最上方,且php文件为utf8编码,那这个错误很可能就是由这个php文件的utf-8的BOM问题引起的,您需要设置您的编辑器在编辑utf-8文件时不添加BOM 以Edit plus为例:您需要将工具->参数->文件->UTF_8签名一项中,"总是添加签名"选项改为"总是移除签名".这样重新编辑保存相应文件后就能解决这个问题.