$ _SESSION变量在文件中不可访问

时间:2013-12-01 13:04:48

标签: php session web

我有一个Web服务器,其中包含一个包含用户ID的特定$ _SESSION变量集。我有一个特定的文件(可能是一个目录),我似乎无法访问其中的此会话变量。我的结构看起来像:

/root/[this is where I set my session variable].php

/root/subdirectory/[this is where the file is].php

在你问之前,是的,我在每个页面的顶部使用session_start()我需要这个变量。现在,我已经尝试了var_dump-ing $ _SESSION并返回一个空数组。但是这个变量似乎可以在其他地方访问。什么可能导致这个?它可能是文件权限吗?或者$ _SESSION变量只能在目录中访问?

谢谢。

附加信息:

这里有一些奇怪的事情:所以我只有当一个文件(例如,index.php)从第二个文件(无论出于何种原因无法访问$ _SESSION var)运行脚本时,我才会遇到这个问题。 ),但是当我手动转到文件(即将URL放入我的网络浏览器)时,$ _SESSION变量返回就好了。

2 个答案:

答案 0 :(得分:0)

$ _ SESSION变量通常绑定到HTTP会话,该会话由设置到浏览器的会话cookie标识。如果在设置会话cookie时使用了目录路径,则会话变量仅在该目录中可用。 HTTP流量监控器会说明最佳状态。

了解如何配置http://php.net/manual/en/function.session-set-cookie-params.php的路径:

  

void session_set_cookie_params(int $ lifetime [,string $ path [,   string $ domain [,bool $ secure = false [,bool $ httponly = false]]]]   )

路径参数是您感兴趣的。如果您想要的话,请使用'/'作为整个域。

如果您不想每次都设置路径,而是一次性设置路径,请使用session.cookie_path php.ini / .htaccess配置。

答案 1 :(得分:0)

尝试通过在session_start之后运行来显示会话cookie参数以确保它们正常:

var_dump(session_get_cookie_params());

如果路径(或域)与您的网络应用程序路径的前缀不匹配,那么您可能必须明确设置它:

session_set_cookie_params($expiretime, '/');
在调用session_start()

之前,在每个脚本中

相关问题