我已将我们的遗留站点添加到我们新的 Symfony 应用程序的遗留绑定(bind)中。
不过我对 session 有疑问。
如果我使用 Symfony 的默认 session 处理程序,我会得到以下信息:
session has already been started by session.auto-start or session_start()
但是,如果我按照遗留应用程序集成的建议使用 session php_bridge(很可能不是为了这个,而是为了 $_SESSION),那么网站会加载,但 session 不会持续存在,或者即使存在也无法销毁。
有人有什么建议吗?
亲切的问候 弥敦道
最佳答案
几个月前,我也使用 Zf1WrapperBundle 将我们遗留的 Zend 应用程序包装在一个 Symfony 项目中。 .我遇到了与您相同的“ session 已经开始”问题。
为了快速解决这个问题,我编辑了 Zend/library/Zend/Session.php
。它有点脏,但效果很好。如果你想这样做,你必须这样做(取决于你的 Zend 1 版本,行号可能不同):
line 462: Comment it
// throw new Zend_Session_Exception('session has already been started by session.auto-start or session_start()');
line 480: Disable errors trigger
$startedCleanly = @session_start();
line 490: Comment it
// session_write_close();
line 493: Comment it
// throw new Zend_Session_Exception(__CLASS__ . '::' . ____FUNCTION____ . '() - ' . Zend_Session_Exception::$sessionStartError);
line 728: Disable errors trigger
@session_destroy();
也就是说,在那种情况下,编辑 Zend 核心文件并没有听起来那么糟糕,因为如果您将遗留项目包装在 Symfony 中,您可能会考虑将遗留 zend 项目完全迁移到 symfony。几个月后,您将摆脱遗留的 zend 代码。
关于php - Symfony2 中的 Zend Framework 1 应用程序 - session 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28944728/