Nginx 上 PHP-FPM 的会话问题

Nginx 上 PHP-FPM 的会话问题

我在我的小项目中使用的会话遇到了一些问题:

PHP Notice:  Undefined index: user_ID in ../config/sessions_class.php on line 29

(这是来自 nginx error.log 的信息)

如果尝试将会话的保存路径设置为 memcache 和 /var/lib/php5/sessions。会话文件实际上是在会话目录中创建的,因此用户权限必须正确。我目前正在将用户设置保存到会话中,例如 index.php 上的 $_SESSION['user_ID'],然后重定向到 anotherpage.php。如果我尝试在那里检索 $_SESSION['user_ID'],我会收到未定义索引错误。session_start 被调用了几次,但我猜这不应该是问题所在。

有什么建议可以指出问题所在吗?如果您愿意,我可以附加 nginx.conf 或 php.ini 文件。

编辑:我得到了 Suhosin PHP Hardening - 这可能会干扰全局 SESSION 变量吗?

答案1

这是针对您的 $_SESSION 超全局数组的 PHP 通知(其行为与大多数其他大批当索引未定义时)

该通知表明,当检查 $_SESSION 中名为“user_ID”的键时,未找到任何内容;如果您有如下条件,您将看到此通知:

if ( $_SESSION['user_ID'] != 0 ) {
  // ...
}

一种解决方法是改用 $_SESSION['user_ID'] 上的 isset() 函数:

if ( isset( $_SESSION['user_ID'] ) ) {
  // ...
}

你可能会考虑重新审视你的错误报告配置如果您不想在日志中看到通知。

相关内容