我遇到只在我的测试服务器上发生的PHP会话问题(我的localhost上的一切正常)。我正在开发基于Roots的自定义Wordpress主题。我的localhost是OS X(PHP 5.4.4),测试服务器是Ubuntu(5.3.10-1ubuntu3.8)。
问题包括:
session_id()
并查看/var/lib/php5/session
)来查看session_name()
和session_start()
在尝试之前被调用其他详情:
我正在尝试将变量保存到命名会话中,因此每次调用session_start()
时我都会这样做:
session_name('my_session'); //Not sure if this line strictly required
if (!session_id()) {
session_name('my_session');
session_start();
}
首先在函数init_sessions
中调用上面的函数,将其挂钩到Wordpress中:add_action('init', 'init_sessions');
,然后还用于需要访问会话变量的其他文件(例如通过AJAX请求的那些文件)。
在localhost上,我可以看到在/Applications/MAMP/tmp/php
中创建的会话文件,并且还会在Firebug的Cookies选项卡下看到一个会话。但是在我的测试服务器上,虽然/var/lib/php5/session
中创建了(太多)会话文件,但我看不到会话出现在Firebug中。
运行phpinfo()并未显示我的localhost上的PHP指令与测试服务器上的PHP指令之间存在任何显着差异。
测试服务器实际上是两台(Rackspace)服务器,带有负载均衡器,但我不认为这是一个问题,因为会话持久性已经建立。
测试服务器设置为子域,例如test.my-domain.com。
我已启用PHP错误报告但未发现任何问题。
我已停用所有其他Wordpress插件。
我确信我的脚本比Rackspace的设置更容易出问题,但我现在有点难过。我特别好奇为什么我可以在/var/lib/php5/session
中看到在测试服务器上创建的会话文件,但是看不到它们出现在Firebug的Cookies选项卡中。
任何想法都非常受欢迎。谢谢!
答案 0 :(得分:0)
好的 - 我想我已经确定了发生了什么(虽然尚未解决)。看起来好像问题归咎于清漆。当用户登录时,会话功能完美。感谢所有建议修复的人。