【发布时间】:2013-07-09 20:06:41
【问题描述】:
我在public_html 目录中有 3 个基本目录。例如这些是:
- Directory_A 代表http://site.com
- Directory_B 代表http://subsite-b.site.com
- Directory_C 代表http://subsite-c.site.com
我在public_html 中有另一个名为Sessions 的目录,当登录的用户访问目录(站点和子站点)时,我想在其中保存sessions cookies
附图清楚地展示了我在cPanel.中的目录结构
在Directory_A 中的文件夹和子文件夹之间传递会话没有问题。当访问者从Directory_A 切换到Directory_B 或Directory_C(从http://site.com 访问到http://subsite-b.site.com 或http://subsite-c.site.com)会话根本没有通过时出现问题,尽管我在每个页面中都设置了变量session_set_cookie_params在上述子网站中,
$mysession = session_name("mysession");
session_set_cookie_params(0, '/', '.site.com');
session_start();
值得注意的是,目前变量session.save_path在我的PHP服务器上具有以下配置。
session.save_path /tmp /tmp
现在,由于会话根本没有从public_html 中的一个目录传递到另一个目录,我通过指向public_html/Sessionslike 的路径更改了session.save_path 的配置,
session.save_path /public_html/Sessions /public_html/Sessions
当访问者访问这些网站时,http://site.com、http://subsite-b.site.com 和 http://subsite-c.site.com 的每个页面中都会返回类似的警告。
Warning: session_start() [function.session-start]: open(/public_html/session/sess_0d38g21b3153bb4343g8d687442e76ed, O_RDWR) failed: No such file or directory (2) in /home/user/public_html/Directory_B/index.php on line 4
在上述警告中的第 4 行,我得到了代码 session_start();
这里出了什么问题?是因为服务器配置不当而发生的吗?我应该怎么做才能将会话从一个目录正确传递到另一个目录?
任何关于这个问题的想法或知识都将不胜感激。
【问题讨论】:
-
您不应该将会话数据保存在我可以通过浏览器访问的文件夹中。它应该在 public_html 文件夹之外的某个地方,或者至少在它之下。
-
@RiggsFolly 感谢您的宝贵意见。是的,你是对的,在这种情况下可能存在会话劫持的可能性。我只是通过一种非常基本的方式进行。
标签: php mysql session session-variables session-cookies