我已将旧网站添加到我们新的Symfony应用程序中的旧版主机中。
我的会话有问题。
如果我使用Symfony的默认会话处理程序,我会得到以下内容:
session has already been started by session.auto-start or session_start()
然而,如果我使用会话php_bridge作为遗留应用程序集成的建议(很可能不是为此而是为$ _SESSION)然后网站加载但会话不会持续或如果他们这样做他们不能被摧毁。
有人有任何建议吗?
亲切的问候 森
答案 0 :(得分:2)
几个月前,我使用Zf1WrapperBundle将我们的遗留Zend应用程序包装在Symfony项目中。我遇到了与你相同的“会话已经开始”的问题。
为了快速解决这个问题,我编辑了Zend/library/Zend/Session.php
。它有点脏,但效果很好。如果你想这样做,你必须这样做(取决于你的Zend 1版本,行号可能不同):
第462行:评论它
// throw new Zend_Session_Exception('session has already been started by session.auto-start or session_start()');
第480行:禁用错误触发器
$startedCleanly = @session_start();
第490行:评论它
第493行:评论它// session_write_close();
// throw new Zend_Session_Exception(__CLASS__ . '::' . ____FUNCTION____ . '() - ' . Zend_Session_Exception::$sessionStartError);
第728行:禁用错误触发器
@session_destroy();
话虽如此,在这种情况下,编辑Zend核心文件并不像听起来那么糟糕,因为如果你将遗留项目包装在Symfony中,你可能会考虑将你的遗留zend项目完全迁移到symfony。几个月后,你将摆脱遗留的zend代码。