在子域之间传递PHP $ _SESSION中的variables

最近我购买了一个VDH包,需要能够在子域与$ _SESSION数组之间进行通信。 这个系统是用这个build立起来的。 我澄清说,在购买之前可以提供VDH服务,但是他们没有提供很多的帮助。

我已经做了很多的研究,并遵循所有的build议,但不能得到它的工作。 我有一个基本的testing设置,其中一个页面将设置会话variables,并在另一个子域输出会话。 目前的结果是会话数据丢失,但会话ID在僵尸testing页上是相同的。

所有的域名都在同一个框中。

testing文件一

$session_name = session_name("er435536311993"); session_set_cookie_params(0, '/', '.mysite.com.au'); @session_start(); $_SESSION['this_is_test'] = 'This was set in the sub domain'; echo '<pre>'; var_export($_SESSION); echo 'done'; var_export(session_id()); 

testing文件二

  $session_name = session_name("374WEaPW2me1392ZQWLM"); session_set_cookie_params(0, '/', '.whoadelaide.com.au'); @session_start(); echo '<pre>'; var_export($_SESSION); var_export(session_id()); 

有些地方提到它可能是一个权限错误。 我已经访问了httpd.conf文件,并将用户和组的权限调整为相同,但仍然不传递数据。

从我可以告诉所有域正在访问相同的tmp空间在会话date被存储。

支持提到,我应该禁用suPHP和Euexec使其工作。 这并没有改变结果。

networking上的任何地方我都找不到解决scheme。 我已经尝试了所有可能的解决scheme,我可以从PHP代码中的变体来调整权限。

我已经尝试了一些人提到的shell命令,但他们没有工作。 CMD在shell中并不是我熟悉的东西。 我有腻子设置,并通过这个累了一些事情。

有没有人有任何想法? 有什么我可以尝试吗? 我的客户是

你为什么要抑制session_start()错误? 这正是错误可能出现的地方。

删除@符号,并检查您的PHP错误日志。

另外,在第一次testing之后,在文件系统中find会话文件,并将ls -l <session file>的输出和该ls -l <session file>的内容添加到您的问题中。 如果这不能解决你的问题,那么在第二次testing后也要这样做。

会话文件通常在/var/lib/php5/但是你可能会有所不同。 检查你的php.ini,如果它不在那里。

最后,我find了一个解决scheme,它的工作。 我需要在php中禁用suhosin。 我什至不知道suhosin是什么,但它的工作。

添加

 suhosin.session.cryptdocroot=Off suhosin.cookie.cryptdocroot=Off 

在php.ini文件的结尾把它整理出来。