【问题标题】:PHP Session Variable Set in Root not Visible in Subdirectory根目录中设置的 PHP 会话变量在子目录中不可见
【发布时间】:2015-03-16 23:22:43
【问题描述】:

我在带有 Godaddy 的 Windows 共享主机 (IIS) 上运行 Wordpress。 Wordpress 的子目录“/wordpress”用完了。如果我设置一个 PHP 会话值,例如$_SESSION["test1"] = "从根设置的值:/";在根目录下的 PHP 中,只要我的 PHP 代码没有根目录,我就可以看到会话的值。如果我尝试从 /wordpress 文件夹访问此会话值,则找不到它。

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

我检查了会话 ID,它们在根目录和 /wordpress 文件夹中都是相同的。我检查了两者的 cookie 集,它们具有相同的路径和域。

我不知道为什么从根目录而不是 /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 运行视图会话脚本,我只会看到“test1”的值,因为它是从 /set_session.php 设置的。

如果我从 /wordpress/view_session.php 运行视图会话脚本,我只会看到“test2”的值,因为它是从 /wordpress/set_session.php 设置的。

【问题讨论】:

  • “在 PHP 中从根目录”是什么意思?您只能在脚本中设置会话变量,并且它将在该会话的上下文中可见。因此,如果您的意思是在一个脚本中设置变量,然后在另一个脚本中没有它,这很可能意味着您引用了不同的会话。
  • 我在 root 中有一个 php 文件/脚本,在那里设置一个会话值。我在 /wordpress 中有另一个 php 文件/脚本,并在那里设置了它的会话值。会话似乎不同,因为从 root 或 /wordpress 查看会话时,每个集合中的值都不会同时显示。
  • 是的,这正是我所说的。所以问题似乎是你为什么使用不同的会话?我建议您发布一些代码,显示您如何设置会话。否则我们无能为力...
  • 我被扔石头了,所以我看了这个问题大概 15 分钟。仍然没有任何意义。你想达到什么目的? “从 /wordpress 文件夹访问此会话值”是什么意思?谁在访问它,如何访问它? WordPress?您是说 Wordpress 中的脚本 A 无法访问脚本 B 的会话变量吗?嗯?

标签: php wordpress session iis subdirectory


【解决方案1】:

首先,让我说 GoDaddy 支持是无用的。他们的立场是,因为没有官方的“错误”,他们无法帮助我,这不是他们的错,尽管有示例基本代码证明了这个问题。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      相关资源
      最近更新 更多