APC操作码缓存中断应用程序


APC opcode cache breaks application

我使用composer来安装Zend Framework 2和其他库。每次在同一路径重新安装应用程序后,我必须手动清除APC(版本3.1.13)操作码缓存(PHP 5.4.8),否则我会得到像

这样的错误
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的问题。

我认为include_path设置了两次。当include_path被调用两次时,APC的读取和解析会产生混乱。请确保您的ZEND项目不会在include_path上被调用两次。

和另一个检查你是否正确配置ini设置或手动设置ini设置数据:

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

与此同时,由于更新,这个问题已经可以解决了。