2016-07-28 7 views
5

Я использовал PHP 7.0.4, и все работало бесперебойно, и я просто обновился до PHP 7.0.8, и я начал получать ошибки, подобные этому во всем место.«Неустранимая ошибка: не могу объявить класс» после обновления до PHP 7.0.8

Fatal error: Cannot declare class Plugins\Users\Plugin because the name is already in use in /var/www/html/plugins/Users/Plugin.php on line 8

Кто-нибудь есть какие-либо идеи, что происходит, я читал в журналах изменений, но что это обновление патча он не должен ничего ломать?

Кроме того, если решение проблемы не найдено, как я могу вернуться к версии 7.0.4? (Я использую Ubuntu 16.04, и я просто обновлен до версии точки)

Резюмируя комментарии до сих пор:

  • Я попытался отключить opcache это не решило проблему
  • Я использую автозагрузчик композитора - я не использую require или include в любом месте
  • Эта ошибка случается для тонны классов, поэтому это явно не проблема с кодом (с моей стороны), кроме того, код работал до того, как я обновился до 7.0.8
+1

Уход за распространением оскорбительного кода? – Machavity

+0

@Machavity Это не один класс, если я удалю этот класс из кода, тогда другой класс выдает эту ошибку, это что-то в PHP, потому что, как я уже сказал, все работает нормально до 30 минут назад. –

+0

сообщение об ошибке кажется ясным –

ответ

1

Ну, по-видимому, я был настолько ослеплен тем фактом, что ошибка возникла после обновления, и я проигнорировал ее, хотя это было прямо на моих глазах.

Это первые несколько строк данного класса (и, видимо, куча других классов):

<?php 

namespace Plugins\Users; 

use FW\Utility\Models\Plugins\Plugin; 

class Plugin extends Plugin { 

Как Вы, и я, наконец, ясно видеть, имя класса Plugin неоднозначно, но не было в 7.0.4, который является фантастическим, и, вероятно, вызвано bug описанной в bishop «s answer

Guess я должен прослушаны Machavity, да.

+0

Рад, что вы его исправили;) – Machavity

4

Недостаточно данных, чтобы сказать окончательно, однако я подозреваю, что opcache. Эта ошибка, по сути, originates in opcache, поэтому я подозреваю, что до этого момента ошибка была скрыта одной из нескольких ошибок кода операции, возможно, #66773.

У вас есть законная проблема с автозагрузкой, которая должна быть исправлена. Переименуйте класс, проверьте свои пространства имен и удалите все жесткие требования.

Вы мог быть в состоянии восстановить прежнее поведение багги путем отключения/повторное включение opcache или возврат к 7.0.4, но на самом деле ошибка была замаскирована только с помощью определенной комбинации автозагрузки и opcache. Это было, действительно, только случайно, что проблема не была обнаружена до сих пор, и это будет только случайно, что вы сможете снова замаскировать ее.

Так что лучше всего исправить проблему.