2011-04-05 75 views
1

我想一個網站移動到新的主機新服務器:(MEDIATEMPLE)Zend_Session_Exception「會話已經開始」 HTTP到HTTPS和反之亦然

當你堅持HTTP或HTTPS一切精細。當從http-> https或https-> http時,你會得到錯誤。

 
Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'session has already been started by session.auto-start or session_start()' 
    in /var/www/vhosts/FakeSite.com/httpdocs/library/Zend/Session.php:462 
Stack trace: 
#0 /var/www/vhosts/FakeSite.com/httpdocs/library/Zend/Session/Namespace.php(143): Zend_Session::start(true) 
#1 /var/www/vhosts/FakeSite.com/httpdocs/library/Zend/Auth/Storage/Session.php(87): Zend_Session_Namespace->__construct('Zend_Auth') 
#2 /var/www/vhosts/FakeSite.com/httpdocs/library/Zend/Auth.php(91): Zend_Auth_Storage_Session->__construct() 
#3 /var/www/vhosts/FakeSite.com/httpdocs/library/Zend/Auth.php(141): Zend_Auth->getStorage() 
#4 /var/www/vhosts/FakeSite.com/httpdocs/application/layouts/layout.phtml(12): Zend_Auth->hasIdentity() 
#5 /var/www/vhosts/FakeSite.com/httpdocs/library/Zend/View.php(108): include('/var/www/vhosts...') 
#6 /var/www/vhosts/FakeSite.com/httpdocs/library/Zend/View/Abstract.php(831): Zend_View->_run('/var/www/vhosts...') 
#7 /var/www/vh in /var/www/vhosts/FakeSite.com/httpdocs/library/Zend/Session.php on line 462 

會話路徑是可寫的,如果你堅持一個協議,似乎工作正常。沒有session_start()調用,並且session.auto-start爲0.

代碼在其他3臺服務器上運行良好。它必須是一個配置問題,但我一直沒能找到它

回答

2

當然看起來像服務器配置了session.auto_start = 1

所以,也許添加到configs/application.ini

phpSettings.session.auto_start = 0 
+0

我已經證實了session.auto_start = 0本地和主,但我試圖將該行添加到application.ini。仍然得到相同的錯誤。 – Robert 2011-04-06 13:55:18

1

我終於明白了。

問題是http上的PHP作爲Apache模塊運行,而https上的PHP作爲FastCGI模塊運行。

我假設那些在MediaTemple或其他東西上以不同的用戶身份運行。會話將由一個創建,並且不能被另一個讀取,因爲另一個用戶擁有該文件。

2

我認爲你有一個插件(或其它庫),這兩次調用session_start()功能

我有同樣的問題,當試圖創建Facebook的資源

+2

確實是這個問題:facebook php sdk試圖用標準php session_start()開始一個會話,它干擾了Zend Framework自己的會話處理程序。 – 2012-05-03 04:01:57

+0

剛剛解決了這樣的問題:我把$ auth-> getStorage();在啓動之前,在FB init之前。 – 2015-02-20 16:47:10

相關問題