Heute habe ich den gleichen Fehler erhalten:
Schwerwiegender PHP-Fehler: Die Klasse Class \ Name \ Here kann hier nicht deklariert werden, da der Name bereits in /var/www/m2/magento2/app/code/path/to/the/class.php in Zeile 100 verwendet wird
Dabei steht die Zeile 100 am Ende der Datei.
Ungefähr nach 4 Stunden Debugging finde ich wirklich den Grund: einen Druckfehler in der Namespace-Deklaration. Bis zum letzten Moment habe ich nicht geglaubt, dass es sich um einen Tippfehler bei der Namenserklärung handelt, aber wenn ich alle Namen neu geschrieben habe, ist der Fehler verschwunden. Dieser Artikel war sehr hilfreich:
Ich werde mich eine Weile am Kopf kratzen, mich fragen, was los ist, und schließlich erkennen, dass es das ist
Pulsetorm
dh ich habe einen Namespace-Namen falsch eingegeben, und wenn die anfänglichen Autoloads die Klassendatei laden, hat sie die gesuchte Klasse nicht definiert, und dann lädt ein zweiter Autoloader (normalerweise Composer) sie erneut und versucht, sie neu zu definieren falsche Klasse.
dh Magento wollte die Klasse
Pulsestorm\Helloworld\Observers\Block
aber ich habe definiert
Pulsetorm\Helloworld\Observers\Block
dank des falschen Namespace.
Vielen Dank, Alan Storm :)
AKTUALISIEREN:
Ein anderer Typ dieses Fehlers ist eine falsche Namespace-Deklaration mit fehlendem Teil des Namespace, wie in diesem Beispiel:
Error:
Generierung von Repositorys-Code ... 1/7 [====> -----------------------] 14% 1 Sek. 50.0 MiBPHP Schwerwiegender Fehler: Kann nicht deklariert werden Klasse Migration \ Step \ Version11410to2000Test, da der Name bereits in /var/www/vhosts/rwld/vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php verwendet wird Zeile 109
wobei die Zeile 109 das Ende der Datei ist.
In der Datei haben vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php
wir den Namespace so gefunden, wie Migration\Step
der richtige Namespace sein sollte, Migration\Step\UrlRewrite
da der Pfad zu dieser Klasse lautet Migration/Step/UrlRewrite
. Nach dem Ändern des Namespace ist Migration/Step/UrlRewrite
der Fehler weg.