2012-03-06 42 views
0

我在使用cakephp中的會話組件時遇到問題。 當他們在不同的服務器上的開發站點上時,他們在整個站點工作良好。在活動網站上發生Cakephp會話錯誤

將最終版本上傳到新服務器後,看起來會話不會在某些控制器中啓動。只有在兩個控制器上纔會發生這種情況,但在這些控制器上似乎沒有任何區別 - 除非可能只有這兩個控制器正在使用自定義文件上傳組件。試過禁用這個,沒有任何改變。

該網站是一個電子商務系統,主要發生在嘗試將項目添加到籃子中時存在的問題,該籃子存儲在會話中。本次會議仍然是空白的,而在開發現場工作的魅力。

我也使用auth組件登錄/註銷,儘管這兩個區域不需要登錄到函數,但是它們會導致它在加載時切換到註銷狀態 - 然後切換回來當網站的任何其他區域被訪問時。身份驗證和會話組件將加載到應用程序控制器中。

謝謝!

+0

有什麼有趣的日誌文件? – 2012-03-06 12:49:02

+0

任何時候都不會記錄或顯示任何錯誤,並且所有內容都可以繼續工作,但籃子仍然空着... – Liam 2012-03-06 13:54:48

回答

1

我以前有過類似的問題,對我來說我和@starlocke的印象一樣,那就是需要啓動一些東西。在檢查$_SESSION未定義之後,我使用了session_start()命令,而不是使用Cake的會話組件。例如:

if(!isset($_SESSION)) session_start(); 

這被放置在AppController類的beforeFilter()方法中。

然後,我也有一個問題,它說它無法啓動會話,因爲已經輸出到服務器,這是通過刪除任何關閉?>控制器內的標籤解決,因爲這些都不是這需要php,並停止任何不需要的輸出發送到瀏覽器,就像在這種情況下。

在PHP結束標記延伸閱讀:

0

我個人的經驗表明,CakePHP的會話獨立於Apache + PHP會話。考慮到這一點,它有助於採取一些措施,以保證CakePHP會話(而不是通常的Apache + PHP會話)在您的網站工作流程的早期實例化,例如,在您的網站的AppControllerbeforeFilter()內添加類似$this->Session->read('foo'); 。不管你嘗試讀什麼鍵,'foo'都足以啓動你的CakePHP會話。

+0

謝謝生病給我試一試 – Liam 2012-03-14 14:46:35

相關問題