2013-07-24 67 views
2

我正在使用Zend Framework版本1.11.11在PHP中編寫代碼。 有時我收到錯誤會話已由Zend項目中的session.auto-start或session_start()啓動

session has already been started by session.auto-start or session_start() 

頁面刷新這個錯誤消失後。我閱讀了幾篇關於這個問題的文章。我檢查了configs並將session.auto_start設置爲Off。我不直接調用session_start(),因爲我只使用Zend_Session組件來處理會話。

這個問題的原因是什麼?它可以與垃圾回收器連接嗎?

+0

閱讀消息,這是非常具體的解釋 –

+0

我明白錯誤信息的含義。讓我感到困惑的是很少發生錯誤。如果我以錯誤的方式使用會話,則每次調用任何操作時都應顯示錯誤。或者我錯了? – Tamara

+0

檢查你的所有包含,看看哪一個使用'session_start()'。尤其是檢查僅包含在收到錯誤的環境中的腳本。 –

回答

0

我猜這是在debian服務器上?如果沒有,這可能不是解決方案......但我們在基於Ubuntu的安裝中遇到了這個問題。

發生這種情況是因爲安裝的PHP程序包和正在運行的cron腳本的組合,用於處理會話清理。 (不管是什麼原因......不知道他們爲什麼這樣做......)

我們通過做以下事情取得了成功: - 刪除cron作業以清除PHP會話內容(相信我,它有 - 它的煩人) - 搭配chmod WWW的數據:WWW的數據的/ var/lib中/ PHP5(或同等信息) - session.gc_probability合= 1在php.ini文件

未必是最好的解決辦法,但它爲我照顧。

+0

因此,在此修改之後,您是否收到任何異常?你認爲在Ubuntu中更改會話文件處理的設計方式是安全的嗎? – Tamara

+0

完成此操作後,我不再有任何問題。我認爲這是安全的,我們幾個月來沒有遇到任何問題。當然,你的里程可能會有所不同 –

1

這似乎與Zend嘗試執行的會話清理任務有關。默認情況下,apache只能訪問會話目錄(在Ubuntu的機器上它將是/ var/lib/php5)。這會導致清理失敗,從而導致HTTP/500間歇性錯誤。

最簡單的是,得到通過執行任一的 1)文件模式一個+ R的/ var/lib中/ PHP5 2)chgrp命令WWW的數據的/ var/lib中/ PHP5讀取訪問阿帕奇; chmod g + r/var/lib/php5

上述命令假定您正在運行Ubuntu。在其他發行版中,調整用戶名/路徑。

相關問題