用最简单的代码
<?php
$ok = session_start();
echo var_dump($ok);
?>
启动会话失败,
$ok
为false,未创建会话cookie。同样,使用
session_name('xxx');
没有效果。这个
$_SESSION
如果在另一个脚本中设置,变量也不会保持值。
同一服务器上使用会话功能的其他旧脚本按预期工作。在本地主机上运行时,相同的脚本可以正常工作。
我在错误分析过程中执行的步骤,其中:
-
为了得到上面的脚本,我删除了命名会话和其他所有内容(最简单的例子再现了错误)。
-
我查看了提供商提供的错误日志,但没有找到任何条目。
-
我确保不存在其他空白,并且所有脚本都立即以
session_start()
.
-
在我展示的同一个脚本中
phpinfo()
标记:
-
Session Support: enabled
-
session.auto_start: Off
-
session.use_cookies: 1
-
session.use_only_cookies: 1
(有争议,但因为其他剧本都有用…)
-
我开始怀疑自己的理智。
-
我记得以前在文本文件中遇到过以字节顺序标记形式出现的“不可见字符”,我想可能是编码之类的问题(请参阅下面的答案)。
可能导致这些症状的其他错误来源是什么?