gpt4 book ai didi

页面之间未保存 PHP session

转载 作者:行者123 更新时间:2023-12-02 07:10:22 25 4
gpt4 key购买 nike

我刚刚购买了一些新的服务器空间,并且正在将一个非常简单的 PHP 应用程序迁移到它,该应用程序在我的其他服务器上运行良好。

出于某种原因, session 数据未存储在新服务器页面之间的 $_SESSION 变量中。我看过this similar SO article和许多其他人一起尝试解决这个问题。

我可以确认:

  1. session 内容在我的其他站点上运行良好。我查看了由 session.save_path 定义的目录,其中有大量 session 文件(在旧服务器上)。
  2. 我在页面末尾回显了 $_SESSION 变量的内容,它保存着正确的数据,只是没有被保存。
  3. 我对每个页面都有 echo's session_id() 并得到相同的输出。
  4. 我查看了新服务器的 session.save_path 文件夹 (/usr/lib/php/session) 指定的文件夹,里面没有任何文件。我检查了权限,它设置在drwxrwx---,这应该意味着php程序可以写入它,对吧?
  5. 我没有 .htaccess 文件。
  6. 我正在运行 CentOS 5.5

这是来自 phpinfo() 输出的相关部分:

Session Support     enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx

Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php/session /var/lib/php/session
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0

我已经联系了托管公司,但他们不会调查,因为他们说这是一个软件问题,而不是托管帐户。呜呜……

为了让您看到一些无法正常工作的代码,我从链接到的文章中窃取了代码:

// info.php
<?
session_start();

$_SESSION['ID'] = "112233";
$_SESSION['token'] = "mytoken";

print $_SESSION['ID'];
print $_SESSION['token'];
?>
<a href="info2.php">info 2</a>

还有一个叫 info2 的代码:

// info2.php
<?
session_start();

print $_SESSION['ID'];
print $_SESSION['token'];
?>
<a href="info.php">info</a>

结果是在 info.php 中打印数组数据,但在 info2.php 中没有输出(当然链接除外)。

非常感谢您的帮助。

最佳答案

尝试 explicitly closing the session在脚本结束之前;也许你会看到一些错误信息。

<?php
error_reporting(E_ALL); ini_set('display_errors', true);
session_start();
echo '<a href="?', time(), '">refresh</a>', "\n";

echo '<pre>';
echo 'session id: ', session_id(), "\n";

$sessionfile = ini_get('session.save_path') . '/' . 'sess_'.session_id();
echo 'session file: ', $sessionfile, ' ';
if ( file_exists($sessionfile) ) {
echo 'size: ', filesize($sessionfile), "\n";
echo '# ', file_get_contents($sessionfile), ' #';
}
else {
echo ' does not exist';
}

var_dump($_SESSION);
echo "</pre>\n";

$_SESSION['ID'] = "112233";
$_SESSION['token'] = "mytoken";

session_write_close();
echo 'done.';

关于页面之间未保存 PHP session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6584121/

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