Pat*_*ing 5 php sessionid session-cookies
我有一个问题 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
Run Code Online (Sandbox Code Playgroud)
当我加载页面时,得到以下信息:
加载的会话ID为当前会话ID为ed320bc5e24c871c9db8ea30e6796c14(或其他版本)
如果刷新页面,我得到:
加载的会话ID为当前会话ID,当前为fbd69d01d511a7be382799dca7279a86(或变体)
会话ID在session_start()调用之前始终为空,并且始终是新的session_id()
它在所有浏览器中都执行此操作,并且我已检查以确保已打开Cookie。
会话保存路径为/tmp。我不确定确切的位置,但是通过我的根目录和所有其他目录,我找不到会话文件(假设它看起来像sess_fbd69d01d511a7be382799dca7279a86)。
因此,我认为保存路径上发生了一些事情,但是对于此事来说还太陌生,无法确定,服务器管理员对此毫无帮助。我在诊断问题时应该采取的下一步措施是什么?服务器正在运行5.3.22。
phpinfo在这里
谢谢你的帮助。
ps,您可以访问pcm.pcmxa.com亲自查看该问题。
如果您的会话目录(最像您所说的/tmp)不可写,那么它将无法保存并且每次都必须重新生成一个新目录。您可以通过以下方法进行验证:
if (!is_writable(session_save_path()))
{
echo 'Session save path "'.session_save_path().'" is not writable!';
}
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,您需要让服务器管理员向您的网络服务器运行的任何用户授予写入 /tmp 目录的权限。