我有一个"我发誓我没有触摸服务器"的情况.老实说,我没有触及任何PHP脚本.我遇到的问题是PHP数据没有保存在不同的页面或页面刷新.我知道正在创建一个新会话,因为我可以设置一个会话变量(例如$ _SESSION ['foo'] ="foo"并将其打印在同一页面上就好了.但是当我尝试使用同一个变量时在另一个页面上它没有设置!我可以在我的主机服务器上使用任何PHP函数或信息来查看发生了什么?
这是一个示例脚本,目前在我的主机服务器上不起作用:
Refresh'; ?>
执行页面刷新后,'views'变量永远不会增加.我认为这是他们身边的问题,但我想确保我不是一个完全白痴.
这是我的主机服务器的phpinfo()(PHP版本4.4.7):
感谢所有有用的信息.事实证明,我的主机更改了服务器并开始使用除/ var/php_sessions之外的其他会话保存路径,这些路径不再存在.一个解决方案就是ini_set(' session.save_path','SOME WRITABLE PATH');
在我的所有脚本文件中声明,但这会很痛苦.我与主机交谈,他们明确地将会话路径设置为确实存在的真实路径.希望这可以帮助任何有会话路径麻烦的人.
检查以确保您没有将https://与http://混合使用.会话变量不会在安全会话和不安全会话之间流动.
有同样的问题 - 发生在我身上的是我们的服务器管理员将session.cookie_secure布尔值更改为On,这意味着cookie只会通过安全连接发送.由于没有找到cookie,php每次都会创建一个新的会话,因此没有看到会话变量.
使用phpinfo()
并检查session.*
设置.
也许这些信息存储在cookie中,而您的浏览器也不接受cookie,就像那样.
首先检查并返回结果.
你也可以做一个 print_r($_SESSION);
转储这个变量,看看内容....
关于你phpinfo()
,是session.save_path
有效的吗?您的Web服务器是否具有此目录的写入权限?
希望这可以帮助.
我有以下问题
的index.php
session_start(); $_SESSION['a'] = 123; header('location:index2.php'); ?>
index2.php
session_start(); echo $_SESSION['a']; ?>
变量$_SESSION['a']
未正确设置.然后,我已经改变了index.php
acordingly
session_start(); $_SESSION['a'] = 123; session_write_close(); header('location:index2.php'); ?>
我不知道这内部意味着什么,我只是向自己解释会话变量变化不够快:)
检查Web服务器是否可以写入会话保存路径.
确保你打开了饼干..(当我把它们关掉来测试时我会忘记)
使用firefox和firebug扩展来查看cookie是否被设置并传回.
并且在一个不相关的说明中,开始查看php5,因为php 4.4.9是php4系列的最后一个.