2011-01-11 56 views
0

我正在使用Symfony 1.2,並且我在切換上下文時遇到了一些問題。Symfony:切換上下文的問題

此代碼是工作的罰款:

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

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

$userToLogin = PcUserPeer::retrieveByEmailAddress("[email protected]"); 
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("[email protected]"); 
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 

感謝您的幫助,

回答

3

Symfony正試圖加載會話存儲對象。我想你的新環境的配置有問題。

檢查

/apps/public/config/factories.yml 

尋找「存儲」,並嘗試找出它是如何從其他應用程序的配置不同。

+1

我收到了同樣的錯誤,一些調查最終顯示阿斯頓是正確的,我的環境被打破了。既然這是在一段時間內工作,他的問題可能會有所不同。對於剛剛啓動並運行環境的用戶,請仔細檢查php是否可以訪問數據庫。在我的情況下,php.ini被打破,不訪問數據庫。 – sage 2011-07-15 16:50:36

0

很難知道不回溯/詳細信息是什麼觸發錯誤。它看起來像使用存儲在數據庫中的會話,並且與此相關的查詢失敗。

嘗試將getApplicationConfiguration的第三個參數設置爲true(這將打開調試)並查看是否獲得更多輸出。

在猜測,它看起來像帳戶應用程序正在使用PDO會話存儲,並沒有連接到數據庫或什麼?