2017-03-16 53 views
1

我正在使用Symfony 2並使用wamp服務器。過了一段時間,我無法再訪問我的頁面,並且總是顯示這個異常,無法弄清楚原因。 下面是完整的堆棧跟蹤:DebugClassLoader.php中的ContextErrorException與ParameterBag類

in DebugClassLoader.php line 203 
at DebugClassLoader->loadClass('Symfony\\Component\\HttpFoundation\\ParameterBag') 
at spl_autoload_call('Symfony\\Component\\HttpFoundation\\ParameterBag') in Request.php line 240 
at Request->initialize(array(), array(), array(), array(), array(), array([...]), null) in Request.php line 222 
at Request->__construct(array(), array(), array(), array(), array(), array([...]), null) in Request.php line 1964 
at Request::createRequestFromFactory(array(), array(), array(), array(), array(), array([...])) in Request.php line 281 
at Request::createFromGlobals() in app_dev.php line 27 

看來「DebugClassLoader」類使用反射來分析什麼是錯的,並獲得到ParameterBag類時,它拋出一個異常。一個var_dump()表明ParameterBag正在按預期實現\ IteratorAggregate和\ Countable,但也有一些隨機類「o」,我不知道它來自哪裏。


PROD環境將在Debian運行的Apache服務器,也許它會工作就可以了,但纔去住我最好解決這個問題對我目前的環境。

所有我可以處理ParameterBag的代碼是類似的東西:

$session = $request->getSession(); 
$session_id = $session->getId(); 
$webclient = $em->getRepository('AppBundle\Entity\WebClient') 
     ->findOneBy(array("session_id" => $session_id)); 
... 

另外請注意,清除緩存沒有解決這個問題。 (使用PHP斌/控制檯高速緩存:明確[--env =開發])

PS:重啓動Apache修復它,但它再次顯示後

回答

1

我有這個問題(不是ParameterBag但同樣的異常在相同的文件),這是由APC的安裝損壞引起的。試着把這一行放在你的php.ini中:

apc.cache_by_default = 0 

[APC]塊中。如果錯誤消失,請考慮刪除並重新安裝APC。

0

APC未啓用。我試圖找出是否安裝了其他緩存來禁用它們,但沒有。它仍然發生在我的開發環境中。

但是,它似乎並沒有發生在我的產品環境中。我可能會使用它。

0

如果在調試時嘗試清除服務器緩存。您將面臨以下錯誤:

致命錯誤:在C:\ xampp \ htdocs \ project_name \ vendor \ symfony \ symfony \ src \ Symfony \ Bundle \中允許內存大小爲268435456個字節耗盡(試圖分配2444952個字節) FrameworkBundle \ Command \ CacheClearCommand.php上線163

所以要解決這個問題,你需要在你的php.ini中添加下面的行並重新啓動apache。

apc.cache_by_default = 0 

現在看到了魔法。它會正常工作。

謝謝,

Anirudh Sood。