我使用的是PHP 7.0.4,一切都运行顺利,我刚刚升级到PHP 7.0.8,我开始到处出现这样的错误。
致命错误:无法声明类Plugins''Users''Plugin,因为该名称已在第8行的/var/www/html/Plugins/Users/Plugin.php中使用
有人知道发生了什么吗,我一直在阅读更改日志,但这是一个补丁更新,不应该破坏任何东西?
此外,如果找不到该问题的解决方案,如何将其降级回7.0.4?(我正在使用ubuntu 16.04,我刚刚升级到点发行版)
总结到目前为止的评论:
- 我已经尝试禁用操作缓存,但这并不能解决问题
- 我正在使用composer的自动加载器-我没有在任何地方使用
require
或include
- 这个错误发生在很多类中,所以(对我来说)这显然不是代码问题,而且在我升级到7.0.8之前,代码一直在工作
没有足够的数据可以明确说明,但我怀疑是opcache。事实上,这个错误源于操作缓存,所以我怀疑直到现在,这个错误已经被几个操作码错误中的一个隐藏了,可能是#66773。
您有一个需要修复的自动加载问题。重命名类,检查名称空间,并删除任何硬性要求。
您可能能够通过禁用/重新启用操作缓存或恢复到7.0.4来恢复以前的错误行为,但实际上,错误只被自动加载和操作缓存的特定组合所掩盖。事实上,这个问题直到现在才被发现只是偶然的,你也只能偶然地再次掩盖它。
因此,最好的办法是解决这个问题。
很明显,我被升级后开始出现的错误蒙蔽了双眼,即使它就在我眼前,我也忽略了它。
这是有问题的类的前几行(显然还有一堆其他类):
<?php
namespace Plugins'Users;
use FW'Utility'Models'Plugins'Plugin;
class Plugin extends Plugin {
正如你和我最后所看到的,类名Plugin
是模糊的,但不在7.0.4中,这很奇怪,可能是由bishop的答案中描述的错误引起的
我想我应该听马查维蒂的,嗯。