麻烦传递数据与php会话变量后改变网站主机


Trouble passing data with php session variables after changing webhost

我开发了一个基本的web应用程序作为学习php的练习。我在第一个web主机上完成了应用程序(安装了php 5.4.38),但后来不得不切换到另一个(安装了php 5.5.30)。代码在第一个web主机上工作得很好,但是一旦我切换到另一个,事情就分崩离析了,因为每次代码试图从先前在另一个文件中设置的会话变量中检索数据时,返回的值是空的。

特别是,我能够从html文件中的会话变量中检索数据,该变量包含在设置会话的php文件之后。但是,当我尝试从那里浏览站点时,会话变量为空。

我检查了两个web主机的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的其余部分或更多信息请告诉我。

第一个主机php.ini配置第二主机php.ini config

编辑:我试图在第二个php.ini上注释会话熵设置,但这并没有解决问题。

提前感谢,

m。

我有完全相同的问题从网站主机到网站主机-会话信息在同一页面上工作-但在转移到下一页时丢失。我可能比你经验少-并且不了解主机php.ini -但也许你可以看看我的问题php5.5

你可能会发现问题

修复。在错误模式下,我看到了这个"警告:session_start():无法发送会话缓存限制器-标头已经发送(输出开始于…)"。所以我基本上从我的代码中删除了每一个"session_start();"在第一个之后,问题消失了。我仍然不知道php.ini配置的哪个部分导致了这个问题。