gpt4 book ai didi

未保存 PHP session

转载 作者:行者123 更新时间:2023-12-05 08:12:05 24 4
gpt4 key购买 nike

我有一个很奇怪的问题;有三个页面正在使用这个 cookie - 一组 $_SESSION = 0 (正如另一篇 Stack 文章所暗示的,我的问题可能与 PHP 在计时方面有困难有关,因此“预创建” session ,然后写入它可能会有所帮助),另一个文件启动 session ,将 session cookie 更改为一个数组,其中包含一些有用的信息其中的数据并据称保存它。只是,在此文件中, session 永远不会真正写入磁盘...在第三页上,我将尝试访问 cookie 并获得“0”的输出(第一页)。

我花了很多时间调试它并检查了:

  1. 那个session_startsession_write_close正在被适本地使用。
  2. PHP.ini 设置正确,具有可写存储路径 (/tmp)
  3. 那个PHP居然在用这个存储路径!
  4. 而且我还坐在那里比较浏览器和服务器上的 cookie ID,以确定何时创建和不创建 session 。

我在我的代码中没有发现问题,并且由于其他页面能够正确使用 session (第 1 和 3 页),所以只有第 2 页有问题。

这是我在第二页的调试输出,显示了我尝试编写的数组以及 PHP 似乎不知道 session ID 是什么的事实,但是当我调用 session_start 时没有出现错误。 ?

bool(true)
session id:
session file: /tmp/sess_ does not existarray(3) {
["user"]=>
string(5) "kevin"
["time"]=>
int(1472646292)
["ip"]=>
string(13) "178.62.20.247"
}
array(1) {
["oscar"]=>
string(26) "9h8c8fgkscitc7l3m7t18f37u2"
}

和第二页的相关代码:

<?php
//error reporting
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//session starts
session_name("oscar");
var_dump(session_start());

session_regenerate_id();

if (! is_writable(session_save_path())) { throw new \Exception( session_save_path() . ' NOT WRITABLE!'); }




$_SESSION['user'] = $_POST['username'];
$_SESSION['time'] = time();
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];

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);
var_dump($_COOKIE);
echo "</pre>\n";

session_write_close();

exit();
?>

var_dump(session_start()); 的输出是

bool(true)

如果刷新页面,$_COOKIE 的输出更改(因为 session ID 已更改)。

感谢您的帮助 - 我希望我没有犯傻。我已经付出了很多努力来调试它。

编辑:

现在这似乎与脚本在文件系统中的位置有关。所有文件都通过一个 index.php 加载- 那些不更新 session (不工作)的位于 api/filename.php ,同时,工作的位于../server/includes/admin/filename.php . (注意,这些路径是相对于 index.php 的)

系统:Ubuntu Server 16.04 PHP7 Apache2

最佳答案

非常感谢 Ryan Vincent 通过聊天帮助解决了这个问题。

它源于实际脚本的加载方式——使用目录上层文件的相对路径。不幸的是,这会导致 PHP 出现一些问题,但不会产生任何错误。通过过渡到绝对路径: DIR 。 api/filename.php 我们设法解决了这个问题。

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

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