PHP SESSION 仅在子文件夹中可用

标签 php session

我可以从子文件夹访问我的 session ,例如。/teachers,/students 在我的网站上,但不是直接在/下的文件。

我的设置:

在我的页面上方:

session_set_cookie_params(time()+86400000, '/', '.mysite.com', 0, 1);
    ini_set('session.use_only_cookies', 1);
    if(!isset($_SESSION))
    {
        session_start();
    }

我如何设置我的 session

session_regenerate_id(true);
$_SESSION['signature'] = $signature;

我的PHP.ini

session.save_path = '/home/mysite/cvsessions'

我哪里错了?

最佳答案

Clarification: This answer is about using php.ini files in the same folders that contain the PHP files in order to overwrite the system-wide default settings, this answer assumes that you already have a standard default php.ini file whose settings you either can not or should not edit.

我遇到了与您所描述的类似的问题,并且可能会猜测您在每个事件文件夹中都没有 php.ini 文件,而实际上您可能只有 ONE php.ini 文件在您的根文件夹中,因此任何子文件夹(/students 等)都没有使用根 php.ini 并简单地使用帐户或系统默认值

根据您设置的服务器系统(例如 CPanel 安装?)然后为了更改默认服务器范围 php.ini 的设置,一个新的 php.ini 文件仅包含自定义设置(例如您的帐户特定 session 存储位置)需要安装到 每个 需要使用非默认 php.ini 设置的目录.

所以,一步一步:

  • /,/teachers,/students等文件夹里有php.ini吗?

  • 这些php.ini文件都是一样的吗?

  • 所有文件夹都应该相同,因此所有文件夹都应该有自己的 php.ini 副本,否则都不应该。否则,当在一个(自定义)php.ini 设置和另一个(系统默认)php.ini 设置之间更改时,会发生这种导致不一致问题的行为变化。

如果任何文件夹缺少它们,或者可能只有您的公共(public) html 根文件夹有 php.ini 文件,那么这意味着所有 other 文件夹都使用默认值,并且所以公共(public) html 根在错误的地方寻找 session ——它在 '/home/mysite/cvsessions' 地址中寻找,而 PHP session 的默认地址类似于 /home/tmp.

这有帮助吗?还是离谱?


检查 session 是否启动的更好方法:

PHP >= 5.4

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

对于 PHP < 5.4.0 版本

if(session_id() == '') {
    session_start();
}

来源:https://stackoverflow.com/a/18542272/3536236

关于PHP SESSION 仅在子文件夹中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38762336/

相关文章:

node.js - 为什么每次关闭浏览器时我的 session 都会过期?

mysql - Birt:将用户停留时间存储在报告中并访问数据库

PHP - 如何检查年份是否平分(即闰年)?

python - Flask:在不使用 session 的情况下在 View 之间传递列表变量

c++ - 最佳实践 - session 处理/超时

php - 使用php读取xlsx文件

c# - Asp.net 中的 session 是否在网站用户之间共享?

php - 如何在 PHP 中处理大数?

java - 有人可以详细解释 SOLR requestHandlers 和 responseWriters 吗?

php - 从数据库中选择(从今天)差异最小的日期