2016-07-28 5 views
5

Ich war mit PHP 7.0.4 und alles lief reibungslos und ich habe gerade auf PHP 7.0.8 aktualisiert und ich fing an, Fehler wie diese überall Ort."Fataler Fehler: Klasse nicht deklarieren" nach dem Upgrade auf 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

Hat jemand eine Ahnung, was los ist, ich habe durch die Änderungsprotokolle gelesen, aber das ist ein Patch aktualisieren es nichts kaputt machen sollte?

Wenn ich keine Lösung für dieses Problem gefunden habe, wie kann ich dann auf 7.0.4 zurückstufen? (Ich verwende Ubuntu 16.04 und ich nur bis zu dem Punkt Version aktualisiert)

die Kommentare Fazit bisher:

  • ich versucht habe zu deaktivieren opcache dies nicht das Problem zu lösen hat
  • ich verwende Composers Autoloader - Ich benutze require oder include nirgends
  • Dieser Fehler tritt für eine Tonne Klassen auf, so ist es eindeutig kein Code-Problem (von meiner Seite), außerdem arbeitete der Code vor dem Upgrade auf 7.0.8
+1

Möchten Sie den fehlerhaften Code teilen? – Machavity

+0

@Machavity Es ist nicht eine einzige Klasse, wenn ich diese Klasse aus dem Code entfernen, dann wirft eine andere Klasse diesen Fehler, es ist etwas in PHP, weil, wie gesagt, es lief alles gut bis vor 30 Minuten. –

+0

Fehlermeldung scheint klar –

Antwort

1

Nun, anscheinend war ich so geblendet durch die Tatsache, dass der Fehler nach dem Upgrade auftrat, dass ich es ignorierte, obwohl es direkt vor meinen Augen war.

Dies sind die ersten Zeilen der betreffenden Klasse (und anscheinend ein paar anderen Klassen):

<?php 

namespace Plugins\Users; 

use FW\Utility\Models\Plugins\Plugin; 

class Plugin extends Plugin { 

Wie Sie und schließlich ich, deutlich sehen kann, Plugin der Klassenname ist mehrdeutig, war aber nicht in 7.0.4, was seltsam ist und wird wahrscheinlich durch die bug beschrieben in bishop ‚s answer

Raten verursacht ich Machavity hören sollte, nicht wahr.

+0

Froh, dass Sie es behoben haben;) – Machavity

4

Es gibt nicht genug Daten, um definitiv zu sagen, aber ich vermute, Opcache. Dieser Fehler in der Tat, originates in opcache so vermute ich bis zu diesem Zeitpunkt der Fehler wurde von einem der mehreren Opcode-Bugs versteckt, wahrscheinlich #66773.

Sie haben ein Autoloading-Problem, das behoben werden muss. Benennen Sie die Klasse um, überprüfen Sie Ihre Namespaces, und entfernen Sie alle erforderlichen Anforderungen.

Sie könnte Lage sein, den ehemaligen Buggy Verhalten wurde durch die Deaktivierung/Wiederfreigabe opcache oder Rückkehr zu 7.0.4, aber wirklich der Fehler nur durch eine bestimmte Kombination von autoloading und opcache maskiert wiederherzustellen. Es war tatsächlich nur ein Zufall, dass das Problem bis jetzt unentdeckt blieb und es ist nur ein Zufall, dass Sie es wieder maskieren können.

So ist der beste Weg, das Problem zu beheben.

Verwandte Themen