我遇到了session_start()
的问题。每次刷新/加载页面时都会创建一个新会话。
这是代码:
<?php
$bob = session_id();
echo "Session ID on load is ".$bob;
echo "<br>";
if($bob==""){
session_start();
$bob = session_id();
echo ' session ID currently is '.$bob;
}
// a bunch more stuff
当我加载页面时,我得到以下内容:
加载时的会话ID是 会话ID目前为ed320bc5e24c871c9db8ea30e6796c14(或变体)
如果我刷新页面,我会得到:
加载时的会话ID是 会话ID目前为fbd69d01d511a7be382799dca7279a86(或变体)
在调用session_start()
之前,会话ID始终为空,且始终为新的session_id()
它在所有浏览器中执行此操作,我已检查以确保Cookie已打开。
会话保存路径为/tmp
。我不确定它到底在哪里,但查看我的根和所有其他目录,我找不到会话文件(假设它看起来像sess_fbd69d01d511a7be382799dca7279a86)。
所以我认为保存路径正在发生一些事情,但是我太新了,不能确切地知道,并且服务器管理员相当无益。我的下一步诊断问题应该是什么?服务器正在运行5.3.22。
phpinfo是here
感谢您的帮助。
ps如果您愿意,可以访问pcm.pcmxa.com查看问题。
答案 0 :(得分:4)
如果您的会话目录(如您所说的那样 / tmp )不可写,那么它将无法保存,并且每次都必须重新生成一个新目录。以下是验证方法:
if ( !is_writable(session_save_path()) ) {
echo 'Session save path "'.session_save_path().'" is not writable!';
}
如果是这种情况,您需要让服务器管理员为您的网络服务器运行的用户提供写入/ tmp目录的权限。