我在管理面板中使用了 ZFcuser 模块。当我登录到管理面板时,它会返回这样的错误:
警告:session_regenerate_id():无法重新生成 session ID - header 已在第 260 行的/home/public_html/dev/vendor/zendframework/zendframework/library/Zend/Session/SessionManager.php 中发送
这在我的本地 Windows 系统中运行良好,但在我的 Linux 托管服务器中运行时返回此类警告。
需要帮助来解决这个问题。提前致谢。
最佳答案
您可以使用 ZF2 SessionManager
重新生成您的 session ID:
$manager = new Zend\Session\SessionManager;
$manager->regenerateId();
但是,您的错误很可能不是由这个函数引起的,而是因为其他原因。 session 管理(session_start()
或重新生成 session ID)只有在您没有使用 echo
或在那段代码之前类似的东西时才有可能:
例如,这将失败:
<?php
echo 'Hello';
session_start();
另一方面,这会起作用:
<?php
session_start();
echo 'Hello';
打开和关闭 php 标签时必须非常小心。如果您的类中有任何结束 php 标记,请将其删除。如果此后有空行,它将被解释为响应中返回的文本,这会导致 session 出现问题。这也会失败:
<?php
// Do some work
?>
<!-- blank line -->
<?php
session_start();
?>
因此:检查所有代码是否有 echo
、print
等等。此外,检查源代码中是否有任何结束 php 标记。如果以上所有内容对您没有帮助,请在您重新生成 session ID 的地方发布一段代码,这可能会提供更多见解。
关于php - 无法重新生成 session ID zend 框架 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21496966/