我可以从子文件夹访问我的 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();
}
关于PHP SESSION 仅在子文件夹中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38762336/