Symfony:切换上下文的问题

时间:2011-01-11 14:32:57

标签: symfony1

我正在使用Symfony 1.2,我在切换上下文方面遇到了一些问题。

此代码工作正常:

require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');

$configuration = ProjectConfiguration::getApplicationConfiguration('account', 'prod', false);
$context = sfContext::createInstance($configuration, 'account-prod');

$userToLogin = PcUserPeer::retrieveByEmailAddress("myemail@example.com");
Auth::login($context->getUser(), $userToLogin, false, false);

echo "all done.";

在某些时候需求发生变化,我需要在“帐户”之前使用“公共”应用程序 然后我改为:

require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');

// {{{ new code:
$configuration = ProjectConfiguration::getApplicationConfiguration('public', 'prod', false);
sfContext::createInstance($configuration);    
// some code using the public app...
// }}}    


$configuration = ProjectConfiguration::getApplicationConfiguration('account', 'prod', false);
$context = sfContext::createInstance($configuration, 'account-prod');
// {{{ new code:
sfContext::switchTo('account-prod');
// }}}  

$userToLogin = PcUserPeer::retrieveByEmailAddress("myemail@example.com");
CustomAuth::login($context->getUser(), $userToLogin, false, false);

echo "all done.";

基本上我添加了一个switchTo调用。

更改后,代码被破坏,错误信息如下:

PHP Fatal error: Call to a member function prepare() on a non-object in /var/www/html/myproj/symfony/storage/sfPDOSessionStorage.class.php on line 109

感谢您的帮助,

2 个答案:

答案 0 :(得分:3)

Symfony正在尝试加载会话存储对象。我想您的新环境配置存在问题。

检查

/apps/public/config/factories.yml

查找“存储”并尝试找出它与其他应用程序的配置有何不同。

答案 1 :(得分:0)

很难知道没有回溯/更多信息是什么触发了错误。看起来您正在使用存储在数据库中的会话,并且与之相关的查询失败。

尝试将getApplicationConfiguration的第三个参数设置为true(这将启用调试)并查看是否获得更多输出。

猜测,看起来帐户应用程序正在使用PDO会话存储,并且无法连接到数据库或其他什么?