【发布时间】:2013-03-06 10:51:55
【问题描述】:
我使用 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 问题。
【问题讨论】:
-
我想我可以使用这里有点复杂的解决方案自动清除 APC 操作码缓存:stackoverflow.com/a/3580939/94289。但我希望有一些更简单的解决方法。
-
touch你所有更新的文件,所以他们有一个新的时间戳,apc是相当愚蠢的。 -
我在邮件列表的某处看到 APC 和 PHP5.4 存在问题,遗憾的是我找不到它,看看到底是怎么说的。
-
这个问题有帮助吗? PHP with APC: Fatal errors: Cannot redeclare class ... 一个建议是尝试更改
apc.include_once_override = 0 -
感谢您的建议! @SimonHampel 我已经有
apc.include_once_override = 0,请参阅here。 @ZdenekMachek 我会尝试,但由于我在重新安装时删除了整个供应商文件夹(包含 Zend 框架)然后再次安装内容(来自作曲家缓存),我认为文件时间戳应该自动更新..
标签: php zend-framework deployment apc composer-php