在子目录中不可见的根中设置的PHP会话变量

时间:2015-03-16 23:22:44

标签: php wordpress session iis subdirectory

我在带有Godaddy的Windows共享主机(IIS)上运行Wordpress。 Wordpress已经用完它自己的子目录" / wordpress"。如果我设置PHP会话值,例如$ _SESSION [" test1"] ="从root设置的值:/&#34 ;;在PHP中,只要我的PHP代码用完root,我就可以看到会话的值很好。如果我尝试从/ wordpress文件夹中访问此会话值,则找不到它。

反之亦然。如果我在/ wordpress及其子目录下设置会话值,只要我在/ wordpress文件夹中操作,我就可以查看会话及其值。如果我尝试访问从root / wordpress中设置的会话值,则无法访问它。

我已经检查了会话ID,它们在root和/ wordpress文件夹中都是相同的。我检查过两者的饼干,他们有相同的路径&域。

我不知道为什么从root用户到/ wordpress文件夹设置PHP会话值不是全局的。任何帮助,将不胜感激。感谢。

/set_session.php

<?php
session_start();
$_SESSION["test1"] = "value set from root: /";
?>

/wordpress/set_session.php

<?php
session_start();
$_SESSION["test2"] = "value set from wordpress subdirectory: /wordpress";
?>

view_session.php(我从root和/ wordpress运行)

<?php
session_start();
echo "<h3> PHP List All Session Variables</h3>";
   foreach ($_SESSION as $key=>$val)
    echo $key." ".$val."<br/>";
?>

如果我从/view_session.php运行视图会话脚本,我只会看到&#34; test1&#34;的值。因为它是从/set_session.php设置的。

如果我从/wordpress/view_session.php运行视图会话脚本,我只看到&#34; test2&#34;的值。因为它是从/wordpress/set_session.php。

设置的

2 个答案:

答案 0 :(得分:0)

首先,让我说GoDaddy的支持是没用的。他们采取的立场是因为没有官方的错误&#34;他们无法帮助我,无论是否有示例基本代码证明这个问题,都不是他们的错。

当我安装WordPress时,我使用他们的Plesk自动安装选项为我安装WP。它将WordPress安装到自己的子目录中。这很好,但是他们的安装过程使/ wordpress文件夹成为自己的虚拟目录,导致其中的所有内容在其自己的应用程序池/线程下运行。这导致/ wordpress目录与站点内的其他目录之间的不同会话。

答案 1 :(得分:0)

由于根文件夹中存在php.ini文件,因此我遇到了类似的问题。该文件具有更改max_input_vars的单个指令。我删除了文件并在cPanel中设置了max_input_vars,然后突然在子文件夹之间正确共享了我的会话。参见https://stackoverflow.com/a/31779463/4370999