gpt4 book ai didi

php - 子目录中无法访问 session 变量

转载 作者:行者123 更新时间:2023-12-04 00:30:27 25 4
gpt4 key购买 nike

当我们将我们的项目从 Beta 测试服务器转移到我们的实时服务器时,我们遇到了以下问题:

session 变量只有在访问它们的文件与创建它们的文件位于同一文件夹中时才能访问。在我们的测试版服务器上情况并非如此。所以我创建了三个非常简单的测试文件:

test.php

<?php
session_id("581186accf44d7e80df40d0b5a47fb7d");
session_start();
$_SESSION['myvariable'] = 'Hello World';
?>
<html>
<body>
<p><a href="page2.php">Same folder test</a></p>
<p><a href="test/page2.php">Subfolder test</a></p>
</body>
</html>

然后我们将以下文件复制到同一文件夹和 test/文件夹中。

page2.php

<?php 
session_start();
print 'Here is page two, my session variable and my session cookie: ';
print $_SESSION['myvariable'];
print $_COOKIE['PHPSESSID'];
exit;
?>

结果如下:page2.php

Here is page two, my session variable and my session cookie: Hello
World581186accf44d7e80df40d0b5a47fb7d

测试/page2.php

Here is page two, my session variable and my session cookie: 581186accf44d7e80df40d0b5a47fb7d

如您所见, session 变量已经消失。但 session ID cookie 保留在子目录中,因此这不是 cookie 问题。

我查看了 phpinfo() 中的 session block ;除了 session.save_path 是在 beta 服务器上设置的,而不是在正式服务器上设置的(这可能意味着它将默认为/tmp),两者的配置是相同的。

此外,我们没有可能将 domain.com 路径更改为 www.domain.com 路径的 .htaccess 文件。

因为这个测试在我们的 beta 服务器上运行,我断定这是一个 php 配置问题,但如果有人能指出需要更改的参数,我将不胜感激!

最佳答案

好吧,看来问题的发生部分是由于我不了解将我自己的 php.ini 放在 public_html 文件夹中会做什么。因为我们不能在我们的共享服务器上使用 ini_set()(它被禁用)我创建了一个 php.ini 的本地副本,其中包含以下行来覆盖无效的默认设置...

date.timezone =  Australia/Melbourne
magic_quotes_gpc = Off

我假设这个本地版本的 php.ini 中的值会简单地覆盖主 php.ini 中的值。

不幸的是,这不是发生在 Jumba/UberGlobal 主机上的情况。创建这个本地 php.ini 意味着整个配置恢复为默认值,除了这两个设置。

解决方案是让来自 Jumba/Uberglobal 的技术人员复制他们的 php.ini 文件(仅更改上述两个值)并将其放在我们的 public_html 文件夹中。

这已经解决了问题。

感谢大家的帮助!

关于php - 子目录中无法访问 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28822865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com