【问题标题】:PHP/Wordpress Session ConfigurationPHP/Wordpress 会话配置
【发布时间】:2011-10-19 01:52:35
【问题描述】:

我正在尝试将 quiz/survey plugin 与现有的 Wordpress 网站集成。一切正常,除了如果用户让测验/调查闲置一段时间(30 分钟足以触发它),他们在尝试提交回复时会收到以下错误消息:

PHP 会话错误。检查您的会话设置。

我按照错误消息的提示做了,并检查了我的 PHP 会话设置。更具体地说,我编辑了服务器的php.ini 文件并将会话超时设置为两个小时。我以为这样可以解决问题,但是当我再次测试时,我在 30 分钟不活动后遇到了同样的问题。

所以我的问题是:

  1. Wordpress 维护的会话是否与 PHP 维护的会话不同?如果是,它是如何配置的?
  2. php.ini 是配置我的会话设置的正确位置吗?
  3. 以前有没有人看到过这个错误,如果有,解决方法是什么?

【问题讨论】:

  • 是的,通常 php.ini 是更改会话设置的正确位置(当然您可以在运行时更改大部分设置)。但是您到底更改了什么设置(有两个主要设置:cookie 生命周期和垃圾收集器,如果您使用 cookie 处理会话)?您是否查看过浏览器中的会话 cookie 何时过期?当用户不在第一步时,您看到的错误只会发生,但在 Wpsqt 的 Shortcode.php 中没有可用的 cookie 变量。
  • @XzKto - 我只更改了 cookie 生命周期设置。但是在浏览器中检查我的 PHPSESSION cookie 列出了“在会话结束时”的到期,这不是应该的。我是否需要做任何特别的事情来获取 php.ini 中的更改。
  • 首先你也需要改变 session.gc_maxlifetime (默认为 24​​ 分钟)或者不管你的 cookie 存在多久 PHP 都会自动删除 session 文件(不是 cookie,有数据的真实文件)在那个间隔之后。更改 session.cookie_lifetime 时,您必须记住它设置的 cookie 过期时间是相对于服务器时间的,而不是客户端的时间。你到底改变了什么 php.ini?如果你将 PHP 作为 Apache 模块安装,那么 Apache 将使用另一个 php.ini。如果你真的改变了设置或查看确切的 php,只需检查 phpinfo()。 ini 路径。
  • @XzKto - 谢谢,设置gc_maxlifetime option 似乎已经修复了它。奇怪的是,我的 PHPSESSION cookie 仍然被列为过期的“会话结束”,但调查现在可以正常工作。
  • 你检查你的 phpinfo() 输出了吗?如果它在那里设置正确,那么可能是 Wordpress 自己设置它(有很多方法可以做到)。我自己从来没有使用过 Wordpress,所以在这里我真的帮不了你。还有一件事:提防大 gc_maxlifetime 值 - 攻击者可以很容易地利用它进行 Dos 攻击 - 使用缓慢的垃圾收集器,您将拥有大量垃圾会话文件,这可能会降低您的服务器速度,甚至会弄乱某些文件系统。

标签: php wordpress session


【解决方案1】:

我有同样的问题,

我通过确保将/var/lib/php/session 文件夹设置为0777 来修复它,删除所有会话文件并优雅地重新启动服务器。

会话消息消失,投票成功。

【讨论】:

  • 您好,我遇到了同样的问题。那个文件夹在哪里?这是在 WP 安装中还是在托管服务器上的某个地方?顺便说一句,我正在使用 webhost4life 来托管我的网站。
  • 你好。您需要对服务器本身进行 root 访问才能找到它们,或者询问您的提供商在哪里可以找到它们。不同的托管服务提供商会将它们放在不同的位置,有时 apache 被配置为将每个用户的会话文件放在他们的主文件夹中。
猜你喜欢
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 2013-10-18
相关资源
最近更新 更多