2013-03-06 41 views
3

我使用作曲家安裝Zend Framework 2和其他庫。以後每次重新安裝在同一路徑下的應用程序,我必須手動清除APC(版本3.1.13)操作碼緩存(使用PHP 5.4.8),否則我得到這樣的錯誤APC操作碼緩存中斷應用程序

PHP Fatal error: Interface 'Zend\\Mvc\\ApplicationInterface' not found 

PHP Fatal error: include(): Cannot redeclare class zend\\eventmanager\\eventscapableinterface 

失敗的類在每次安裝應用程序後都會更改。我有apc.stat=1,所以操作碼緩存應該注意新部署的php文件並自動重新編譯它們,如果我以前在同一路徑上部署了應用程序。

我已經在作曲家開發人員的Github上討論過這個問題,並在此處發佈了我的APC設置:https://github.com/composer/composer/issues/1662。我們同意這看起來更像是一個APC問題。

+0

我想我可以使用這裏有點複雜的解決方案自動化APC操作碼緩存清除:http://stackoverflow.com/a/3580939/94289。但我希望有一些更容易的修復。 – aimfeld 2013-03-06 11:03:35

+1

'觸摸'所有更新的文件,所以他們有一個新的時間戳,'apc'是非常愚蠢的。 – Wrikken 2013-03-13 21:57:19

+0

我在郵件列表上看到過APC和PHP5.4存在問題,很不幸,我找不到它,看看究竟是什麼意思。 – 2013-03-13 22:01:07

回答

0

我認爲是include_path設置了兩次。當include_path調用兩次時,會使APC讀取和解析混淆。確保您的ZEND項目在include_path上未被調用兩次。

而另一結賬,你是正確配置INI設置或手動將INI設置數據:

apc.include_once_override = 0 
apc.canonicalize = 0 
apc.stat = 0 

同時在這個問題上可能會由於更新已經解決了。