2012-07-18 109 views
4

我在会话中有一个奇怪的问题..这是在我的本地机器上的WAMP服务器上工作..我的问题是温东主机服务器在美国它不工作..当服务器托管时,php会话变量值为空

即时通讯做这样的:

session_start(); 
$_SESSION['test'] = 'testing login..'; 
在另一页

我做:

session_start(); 
echo('my session value is : '.$_SESSION['test']); 

但我只得到 我的会话值是:

我的会话值没有设置..

我检查了服务器cPanel中的session.save_path,它表示/ tmp。

请帮助.. 在此先感谢。

+0

做饼干的工作? – 2012-07-18 13:56:29

+0

@sixeightzero我总是发现他们这样做。哦,等等,你问OP,他的* cookies是否可以工作...... – DaveRandom 2012-07-18 13:57:17

+0

也许剧本快关闭了? (取决于设置变量后发生的情况)。尝试session_write_close()设置变量后。 – stephangroen 2012-07-18 13:57:40

回答

2

也许你的脚本死了,因为session_start失败,“头已发送”?这可能发生,例如,如果你的试验机生产服务器不编码新的生产线以同样的方式...

的错误可能不会显示在生产服务器上,尝试类似的东西:

ini_set('display_errors', 1); 
session_start(); 

看看你是否有用。

+0

不.. ..我没有得到错误.. – Rifky 2012-07-18 14:12:53

+0

@Rifky,也尝试'ini_set('error_reporting',-1);'。 – Buddy 2012-07-18 14:23:04

+0

nop ..没有错误 – Rifky 2012-07-18 14:30:35

0

检查您的session.save_path的权限。这个位置需要由Apache/httpd用户写入。

另请检查您的session.save_path是否包含任何sess_前缀文件。

+0

如何检查权限。我对此有点新。 – Rifky 2012-07-18 15:34:46

+0

你有命令行访问该框吗?做'ls -la/tmp'另外,如果你的用户是'chroot','/ tmp'可能不是你的会话处理程序正在查找的文件。你总是可以尝试像'〜/ sessions'这样的新路径。制作目录,更新ini或脚本,然后重试。 – 2012-07-18 15:40:48

+0

感谢您的信息。我会在早上检查,因为我现在不在办公室。 – Rifky 2012-07-18 15:59:20

0

感谢您的所有帮助。

我的问题是/ tmp文件夹中的安全权限。一旦纠正它的工作。

平均时间不要只使用SESSION ID的数字(例如$ _SESSION ['12345']),因为在Linux托管它不采取数字唯一索引和跳过。 (所以使用$ _SESSION ['ACS12345'])..

0

php开始标记必须写在一个PHP文件的第一行。这种方法帮助我解决这个问题。

+0

这是对另一篇文章的评论。 – Rico 2014-03-17 22:10:47