【问题标题】:PHP Session creates new Session ID for each scriptPHP Session 为每个脚本创建新的 Session ID
【发布时间】:2020-05-05 18:01:09
【问题描述】:

我几乎到处寻找并尝试了几乎所有方法,但我似乎无法让这些 PHP 会话正常工作。这是我的设置:

我正在本地运行一个 ReactJS 应用程序,它在 Web 服务器上调用一些 PHP 脚本(使用 axios)来处理 MySQL 数据库上的基本 CRUD 操作。我正在尝试使用 PHP 会话,并且 创建 会话没有问题,但是每次我调用脚本来读取或插入数据时,都会生成一个新的会话 ID,并且我会丢失我的会话变量。

我在每个脚本的开头都包含了 session_start(),仅刷新页面就会生成一个新的会话 ID。

我已经尝试了 php.ini 中我能想到的几乎所有值,但似乎没有任何效果。

session.auto_start  Off
session.cache_expire    1
session.cache_limiter   nocache
session.cookie_domain   no value
session.cookie_httponly no value
session.cookie_lifetime 14400
session.cookie_path /   
session.cookie_secure   no value
session.gc_divisor  1000
session.gc_maxlifetime  14400
session.gc_probability  1
session.lazy_write  On
session.name    PHPSESSID
session.referer_check   no value
session.save_handler    files
session.save_path   {hidden stuff}/var/php_sessions
session.serialize_handler   php
session.sid_bits_per_character  5
session.sid_length  32
session.upload_progress.cleanup On
session.upload_progress.enabled On
session.upload_progress.freq    1%
session.upload_progress.min_freq    1
session.upload_progress.name    PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix  upload_progress_
session.use_cookies 1
session.use_only_cookies    0
session.use_strict_mode 0
session.use_trans_sid   0

会话肯定是在正确的位置正确创建的,但由于创建了新会话,因此实际上并没有恢复会话。

【问题讨论】:

  • 向站点添加了一个简单的会话命中计数器,它可以工作。想知道这是否与反应(axios)如何调用脚本有关。每次调用 PHP 脚本时,它可能会创建一个新的“会话”?

标签: php session


【解决方案1】:

不完全确定为什么,但一种可能的解决方案是将会话存储在 mysql 中的表中(您为此目的创建自己)。

【讨论】:

    【解决方案2】:

    session.save_path {隐藏的东西}/var/php_sessions

    确保php进程的用户对该目录有写权限。

    【讨论】:

    • 我愿意。如前所述,我可以在保存路径中看到会话文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 2018-04-26
    相关资源
    最近更新 更多