正在创建我的PHP会话,但$_SESSION
变量未写入会话文件。
我在这里有三个测试PHP页面,我用它来诊断这个问题:
test_a.html
:
<html>
<body>
<form action='test_b.php' method='post'>
Put something here:
<input type='text' name='saveme' />
<input type='submit' value='Go!' />
</form>
</body>
</html>
test_b.php
:
<?php
session_start();
$_SESSION['saveme']=$_POST['saveme'];
echo "Here's what you wrote:<br>".$_SESSION['saveme']."<br>".
"<a href='test_c.php'>Take me to the final check</a><br>";
echo "And here's your session_id: ".session_id();
session_write_close();
?>
test_c.php
:
<?php
session_start();
echo "Here's what you wrote (maybe?):<br>".$_SESSION['saveme']."<br>".
"You should also see saveme below:<br>";
foreach ($_SESSION as $key=>$val)
echo $key." ".$val."<br>";
echo "And here's your session_id: ".session_id();
?>
当打开test_a.html
并在文本框中输入任何内容并点击Go!时,它将在test_b.php
上正确显示(当它从内存中设置和调用时),但它不显示在{ {1}}。
test_c.php
已设置并显示为相同。 cookie存储正确。会话文件在文件系统中正确创建,但未写入并且仍为零字节文件。
现在没有在我网站的任何页面上写入会话(尽管到目前为止已经工作了一年多),因此这些代码段中的拼写错误(如果有的话)可能无关紧要。
我检查过的事情:
session_id
总是成功的(并且之前没有任何内容)session_start
已正确创建且在两个页面上都相同session_id
session_id
和session.use_cookies
在session.use_only_cookies
目录以减少文件系统问题的可能性想法?
答案 0 :(得分:0)
您的会话存储目录可能是可写的,但文件不可写。尝试在会话文件上将权限设置为0666,并检查是否可以解决问题。这就像一个进程正在创建文件,而下一个进程无法编写它。创建时文件的所有者是什么?检查它是否是www-data或运行你的php。
答案 1 :(得分:0)