Cannot send session cache limiter

在windows下编程,当使用session_start()方法的时候,有时会报
session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/inpublisher/php1.php:1)这样的错误,说是已经有输出,用编辑器打,前面明明什么都没有,原来在使用AJAX的 时候,也出现过这种情况,后来,把这个PHP文件放到linux中打开,会发现,在文件的最前面,会出现“锘 ”这样的一个字符(引号内),把它去掉以后,再运行,OK,运行正常。后来在网上搜索一些文件,给的解释是:UTF8文件的BOM(Byte Order Mark)标志,在保存的时候会自动存入!
不管它是干嘛的,现在的目的就是把它去掉,我总结的方法有下面三种:
1、       在Linux下打开,去掉后再保存
2、       用写字板打开,把光标放到最前后回车,然后再敲删除,重新回到第一行,这样最前面的那个字符就会去掉
3、       使用UltraEdit编辑器(很好用的一个编辑器,网上多的是,自己下去),打开高级----配置----Unicode/utf-8 检测,把自动检测UTF-8文件,自动检测没有BOM的Unicode文件等前面的勾全去掉,然后你再打开那个文件,就会发觉“锘 ”这个字符出现了,删除就OK了

具体效果没有实验,用时大家小心!

============================================================

这三个方法中:

第一个方法:因为没有装linux系统,所以没有办法验证,不过,作者是这样做的,这个方法应该是可行的

第二个方法:具体步骤是:用记事本打开,把光标放在文本的最开始,再回车,把php文件开头的"<"删去,再敲一个删除,重新回到第一行,再把删去的“<”添上去。保存。就会把那个字删去。

原因:文件的<?php?>前面多出的是“锘?”而且“?”是与后面的“<”连在一起的,你删去“?”,那么“<”也会不见。先单独删去“<”,连带“?”也会不见。

---------------------------------------------------------------------------------------------

第三个方法:有效。但是这时中文在ultraedit中会显示乱码,网页显示中文正常。你重新用DW打开这个文件,里面的中文是显示正常的,所以不用担心。

我自己的方法:(不小心试出来的)

用<!-- -->包含住<?php session_start(); ?>

posted @ 2009-04-27 09:50  Just for Fun  阅读(232)  评论(0编辑  收藏  举报