2013-02-04 37 views
18

\ ... \程序\緩存\ dev的\ classes.php重新安裝我的WAMP的環境中,該錯誤信息顯示在屏幕上後,我打開app_dev後:不能重新聲明類SessionHandlerInterface用C。 php:Symfony的2 - 致命錯誤:行532

Fatal error: Cannot redeclare class SessionHandlerInterface in C:...\app\cache\dev\classes.php on line 532

有沒有人有任何線索發生了什麼問題?

回答

41

我解決它清除緩存:

app/console cache:clear 
+2

這是一個永久性的修復?還是你需要做其他事情?即 - 更新您的Symfony 2安裝。 – richelliot

21

PHP版本5.4推出了基於稱爲SessionHandlerInterface在接口上一個新的會話管理系統和它似乎是你的Symfony2的代碼聲明瞭在全局命名空間非常相同名稱的類,所以有一個名稱衝突。

下面是文檔:http://www.php.net/manual/en/class.sessionhandlerinterface.php

SessionHandlerInterface is an interface which defines a prototype for creating a custom session handler. In order to pass a custom session handler to session_set_save_handler() using its OOP invocation, the class must implement this interface.

+1

誰低估了,爲什麼?吳 –

+2

也許因爲它只是「信息」,而不是一個「解決方案」本身......但有我的愛:) – yogee

+0

感謝您的信息+1 :) – xil3

14

簡單的清除緩存並沒有爲我工作。它要求使用下面的命令清除生產緩存。

php app/console cache:clear --env=prod --no-debug 
+0

你的意思是--no-debug? – ahmedbhs

2

確保您已在接口SessionHandlerInterface定義的命名空間

EX:

namespace app\cache\dev; 
+0

感謝您指出這一點。我完全錯過了。 :) – Tek

7

只要設法清除Symfony2的緩存與一個(或全部)下面的命令:

php app/console cache:clear --env=prod --no-debug (on production mode) 

或/和

php app/console cache:clear --env=dev --no-debug (on development mode) 
3

只有這個工作對我來說rm -rf app/cache/*

-1

使用app_dev.php時,我甚至有緩存問題。我會改變路線,但是當我嘗試通過瀏覽器訪問它時,它不會更新。

我試着評論其中的任何緩存(如上所述)。沒有任何工作。

如果我運行控制檯緩存:清除它將修復它,但下一個路由更改會再次中斷。我必須運行緩存:每次保存清除,這是荒謬的。

我的問題原來,因爲我用SFTP遠程工作,PHP風暴(我的編輯)在其部署配置「保存時間戳」。一旦我改變了配置,問題就消失了。顯然有一些緩存正在查看文件時間戳,即使在開發環境中也是如此。