未读取 PHP session

标签 php linux session

我正在 magento 和 Symfony2 之间进行一些“有趣”的分享会。它在我的电脑上运行良好(mac osx 10.6 + PHP 5.3.3),机制如下:

  • 用户登录到 magento(在 foo.example.com 上)
  • 用户访问另一个网站 (bar.example.com) 并登录。
  • session 作为文件存储在 magento var/session 目录下。

session cookie 设置为在所有 .example.com 子域上共享。 正如我之前所说,它在我的机器上运行完美。

我今天使用 PHP 5.3.5-dotdeb 在 Ubuntu 8.0.4 服务器上部署了这两个应用程序,并为我的生产域 (.example.org) 配置了 session 共享机制。 session cookie 也在两个子域之间共享。

现在,乐趣开始了:

  • 我在 foo.example.org 上登录我的 magento 应用程序并获得一个值为“abc”的 session cookie
  • 在 magento var/session 目录中创建了一个名为 sess_abc 的文件。
  • 文件所有者是 www-data:www-data,文件权限是 -rw--------
  • 如果我刷新 magento 页面,我仍然处于登录状态。

  • 我转到 bar.example.org 上的其他应用程序

  • PHP 接受 session cookie abc 但不检索其中的数据。
  • 如果我执行 var_dump($_SESSION),我将得到一个空数组
  • 最后,文件sess_abc被覆盖,权限不变。
  • 如果我刷新此页面,我的 var_dump 将提供一些 symfony 写入 session 的信息。

你们有没有想过为什么 PHP 不从这个 session 文件中检索数据? 我已经尝试过 chmod go+rw session 文件,但结果是一样的......

提前致谢!

编辑:

Suhosin 已启用。 phpinfo() 在 bar.example.org 上给出了这个

suhosin.session.checkraddr  0   0
suhosin.session.cryptdocroot    On  On
suhosin.session.cryptkey    [ protected ]   [ protected ]
suhosin.session.cryptraddr  0   0
suhosin.session.cryptua Off Off
suhosin.session.encrypt On  On
suhosin.session.max_id_length   128 128
session.auto_start  Off Off
session.bug_compat_42   Off Off
session.bug_compat_warn Off Off
session.cache_expire    180 180
session.cache_limiter   no value    nocache
session.cookie_domain   .example.org    no value
session.cookie_httponly Off Off
session.cookie_lifetime 3600    0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.name    frontend    PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /www/var/session    no value
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_trans_sid   0   0

最佳答案

我不知道你知道,但是 magento 将 session 存储在“私有(private)”文件夹 path/to/magento/var/session 中......可能在 MacOS 上你可以覆盖你的 php.ini 文件。 ini(trought magento)以覆盖您的 session 路径;但是在 ubuntu 上你不能(/可能不会)覆盖你的 php.ini ...

你检查过了吗?

关于未读取 PHP session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5493210/

相关文章:

php - 当减去年份时,它返回不同的结果

php - 使用 Twilio 接收短信并将其存储在数据库中

javascript - if 条件在 ng-repeat 变量上

apache - 为什么当 session.cookie_lifetime=0 时 session 不会在浏览器关闭时过期?

php - 如何处理dompdf两列设计?

c++ - 奇怪的 PulseAudio 监控设备行为

c - Libexif undefined reference 错误

linux - AWK 匹配在本地工作但不在 debian 服务器上的 bash 中

php - 在哪里存储登录尝试和当前登录状态、cookie 或 session ?

java - session.createQuery() 在 spring 中不返回列表