以最简单的代码
<?php
$ok = session_start();
echo var_dump($ok);
?>
启动会话失败,$ok
为假,并且未创建会话cookie。同样,使用session_name('xxx');
命名会话也无效。如果在另一个脚本中设置,$_SESSION
变量也不会保留值。
同一台服务器上使用会话功能的其他旧脚本按预期工作。在本地主机上运行时,相同的脚本可以正常工作。
我在错误分析过程中执行的步骤如下:
session_start()
开始。phpinfo()
来进行标记:
Session Support: enabled
session.auto_start: Off
session.use_cookies: 1
session.use_only_cookies: 1
(有争议,但由于其他脚本起作用了...)还有哪些其他可能导致这些症状的错误来源?
答案 0 :(得分:1)
问题在于,脚本文件被编码为Windows下Notepad ++调用的UTF-8 BOM
。
在Notepad ++中将其转换为直线UTF-8
并重新上传脚本会立即解决所有问题。
所以我想文件中的某个地方留下了一个流浪字节顺序标记,这导致服务器上的php安装无法识别或无法解析脚本文件。
编辑:同样的根本原因由马里奥在https://stackoverflow.com/a/8028987/3055288
进行了更详细的描述。