今天在修改joomla系统的配置文件configuration.php时,手头上一时没有专门的编辑器,就直接用记事本打开修改了,以为保持的时候只要保存成UTF-8格式就没问题,结果就真的出问题了,提示
1 | Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by |
其实问题就在于刚刚用记事本保存的configuration.php上。来看看vjuke@ZNZ对于这个问题的介绍:
所有文件采用 UTF-8 编码,因此所有文本文件(模板文件和php文件)必须保存为 UTF-8 编码。另外,部分文本编辑软件,如Dreamweaver、记事本等,在保存UTF-8文件时会在文件最开始加入UTF-8识别记号(BOM)。BOM在WINDOWS下打开文件时不可见,但PHP在读取文件时仍会将其作为文件的一部分,由此会产生无法登入、页面空白、出现上面的提示信息、模板无法顶住页面顶部等现象。
解决的方法:
建议您使用
Editplus 2.12 或者 UltraEdit 支持UTF-8的编辑器编辑PHP文件。它们对无BOM的UTF-8文件兼容较好;
UltraEdit用户需将 “保存时对所有UTF-8写入UTF-8 BOM文件头标记” 选项设置为关,其它文本编辑器用户,在编辑完后如发现程序异常,可参考这篇文章解决。
所以,我修改的configuration.php文件无BOM信息,而在用记事本修改后强制加入,导致PHP读取这个文件时出现问题。解决方法很简单,换个文本编辑器。正好下载了个Komodo IDE,编辑后保存上传,OK,问题消失。