";致命错误:无法声明类";升级到PHP 7.0.8之后


"Fatal error: Cannot declare class" after upgrading to PHP 7.0.8

我使用的是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的自动加载器-我没有在任何地方使用requireinclude
  • 这个错误发生在很多类中,所以(对我来说)这显然不是代码问题,而且在我升级到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的答案中描述的错误引起的

我想我应该听马查维蒂的,嗯。