我开发了一个基本的Web应用程序,作为学习php的练习。我在第一个webhost(安装了php 5.4.38)上完成了应用程序,但之后不得不切换到另一个(安装了PHP 5.5.30)。代码在第一个虚拟主机上工作正常,但是一旦我切换到另一个,事情就崩溃了,因为每次代码试图从先前在另一个文件中设置的会话变量中检索数据时,返回的值都是空的。
特别是,我能够从html文件中的会话变量中检索数据,该文件仅包含在设置会话的php文件之后。但是,一旦我尝试从那里浏览网站,会话变量就是空的。
我检查了两个webhosts的php.ini,我在会话变量配置中发现了一些差异。我在网上寻找解决方案,并尝试实施它们,但到目前为止,都没有成功。我试图在第二个php.ini中修改会话的配置,但这也不起作用。
正如您所看到的(从下面提供的两个超链接),“已注册的保存处理程序”部分不同:在第二台主机上缺少“memcache”处理程序(我在互联网上阅读了关于存储会话的可能性)在memcache或数据库中,但说实话,鉴于我目前对php的了解,这对我来说太技术了。
“已注册的序列化处理程序处理程序”也有所不同,在第一个主机的配置中它们是“php php_binary wddx”,而在第二个主机的配置文件中它们是“php_serialize php php_binary wddx”。
除了保存处理程序之外,第二个主机还有一些“熵”设置,第一个没有。此外,第一个主机将“force_path”设置设置为“1”,而该设置未出现在第二个主机的文件中。此外,第一个主机将“gc_probability”设置为“0”,而第二个主机将其设置为“1”。此外,第一个主机没有“use_strict_mode”设置,而第二个主机没有设置为“Off”。最后,第一个主机将“use_trans_sid”设置设置为“1”,而第二个主机将其设置为“0”。
我最好的猜测是问题在于没有“memcache”在第二个webhost的php.ini文件中有一个保存处理程序,但是,我不知道如何修复它。
请附上两个php.ini的相关部分,如果你需要其余的php.ini或更多信息,请告诉我。
First host php.ini config Second host php.ini config
编辑:我试图在第二个php.ini上注释掉会话熵设置,但这并没有解决问题。
提前致谢,
M.C。
答案 0 :(得分:0)
我有完全相同的问题从webhost到webhost - 会话信息在同一页面上工作 - 但在转移到下一页时丢失。我可能没有你的经验 - 并且不了解主机php .ini - 但也许你可以看一下我的问题 SESSIONS not transferring information php5.5
你可能会看到问题
答案 1 :(得分:0)
修正了它。在错误模式下,我看到了这个"警告:session_start():无法发送会话缓存限制器 - 已发送的标头(输出从......开始)"。所以我基本上删除了所有" session_start();"从我的代码后的第一个和问题消失。我仍然不知道php.ini配置的哪一部分导致了这个问题。