PHP 会话变量不写入文件

编程入门 行业动态 更新时间:2024-10-26 07:28:47
本文介绍了PHP 会话变量不写入文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我的 PHP 会话正在创建,但 $_SESSION 变量没有写入会话文件.

My PHP sessions are being created but $_SESSION variables are not being written to the session file.

我在这里使用了三个测试 PHP 页面来诊断此问题:

I have three test PHP pages here that I'm using to diagnose this problem:

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 上(当它被设置和调用时从内存中)但它没有显示在 test_c.php 上.

When opening test_a.html and typing in anything to the textbox and hitting Go!, it will show up correctly on test_b.php (when it is set and recalled from memory) but it is not shown on test_c.php.

session_id 已设置并显示相同.cookie 已正确存储.会话文件在文件系统中正确创建,但未写入并保持零字节文件.

The session_id is set and shows to be the same. The cookie is stored correctly. The session file is created correctly in the filesystem, but is not written to and remains a zero-byte file.

现在我网站的任何页面上都没有写入会话(尽管到目前为止已经运行了一年多),因此这些代码片段(如果有)中的错别字可能无关紧要.

Sessions are now not being written on any pages of my site (despite working for well over a year up to this point) so typos in these code snippets (if any) are likely irrelevant.

我检查过的东西:

  • 会话存储目录是可写的,磁盘有足够的存储空间
  • session_start 总是成功的(之前什么都没有)
  • session_id 已正确创建并且在两个页面上都相同
  • 会话 cookie 是使用正确的 session_id
  • 创建的
  • session.use_cookies 和 session.use_only_cookies 已开启
  • 注册全局变量已关闭
  • Cookie 已启用
  • 清除了 /tmp 目录以减少文件系统问题的可能性
  • 尝试将会话数据存储在内存中(无效)
  • 尝试更改会话文件位置(无效)
  • 在 Chrome & 上测试火狐
  • The session storage directory is writeable and the disk has plenty of storage
  • session_start is always successful (and there is nothing before it)
  • The session_id is created correctly and is the same on both pages
  • The session cookie is created with the correct session_id
  • session.use_cookies and session.use_only_cookies are on
  • Register globals is off
  • Cookies are enabled
  • Cleared the /tmp directory to reduce possibility of filesystem issues
  • Tried storing the session data in memory (didn't work)
  • Tried changing the session file location (didn't work)
  • Tested on Chrome & Firefox

想法?

推荐答案

PHP 会话键用竖线分隔 |所以|键名会破坏你的会话.也许这就是问题所在.

PHP session keys are separated by the pipe character | so | in key name will break you session. Maybe this is the problem.

检查一下:

在此处输入链接描述

更多推荐

PHP 会话变量不写入文件

本文发布于:2023-10-11 22:24:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1483012.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:变量   文件   PHP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!