升级到PHP 7.0.8后出现“致命错误:无法声明类”

时间:2016-07-28 01:08:35

标签: php ubuntu opcache

我使用的是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而我刚升级到点发布版)

到目前为止总结评论:

  • 我已经尝试过禁用opcache这没有解决问题
  • 我正在使用作曲家的自动加载器 - 我没有在任何地方使用requireinclude
  • 这个错误发生在很多类中,因此显然不是代码问题(就我而言),而且在升级到7.0.8之前代码工作正常。

2 个答案:

答案 0 :(得分:4)

没有足够的数据可以肯定地说,但我怀疑是opcache。实际上,这个错误originates in opcache所以我怀疑,直到这一点,错误已经被几个操作码错误中的一个隐藏,可能是#66773

您合法地存在需要修复的自动加载问题。重命名该类,检查您的命名空间,并删除任何硬性要求。

可能能够通过禁用/重新启用opcache或恢复到7.0.4来恢复以前的错误行为,但实际上该错误仅被自动加载和opcache的特定组合所掩盖。事实上,这个问题直到现在才被发现,而且只是偶然的,你可以再次掩饰它。

所以最好的方法是解决问题。

答案 1 :(得分:1)

嗯,显然我被升级后错误开始发生的事实蒙蔽了眼睛,即使它在我眼前,我也忽略了它。

这些是该类中的前几行(显然是一堆其他类):

<?php

namespace Plugins\Users;

use FW\Utility\Models\Plugins\Plugin;

class Plugin extends Plugin {

正如你,最后我可以清楚地看到,类名Plugin是不明确的,但不在7.0.4中,这很奇怪,可能是由于bug所描述的bishopanswer

猜猜我应该听Machavity,呵呵。