Oggi ho ricevuto l'errore dello stesso tipo:
Errore irreversibile di PHP: impossibile dichiarare la classe Class \ Name \ Here, poiché il nome è già in uso in /var/www/m2/magento2/app/code/path/to/the/class.php sulla riga 100
dove la riga 100 è la fine del file.
Circa dopo 4 ore di debug trovo davvero il motivo: un errore di stampa nella dichiarazione dello spazio dei nomi. Fino all'ultimo momento non credevo che si trattasse di un errore tipografico nella dichiarazione dei nomi, ma quando ho riscritto tutti i nomi di nuovo, l'errore è scomparso. Questo articolo è stato molto utile:
Mi gratto la testa per un po ', mi chiedo cosa stia succedendo e alla fine realizzerò che è questo
Pulsetorm
cioè ho sbagliato a digitare un nome di spazio dei nomi e quando i caricamenti automatici iniziali caricano il file di classe, non avrà definito la classe che sta cercando, quindi un secondo caricatore automatico (di solito il compositore) lo carica di nuovo e prova a ridefinire lo stesso classe errata.
cioè Magento voleva la classe
Pulsestorm\Helloworld\Observers\Block
ma ho definito
Pulsetorm\Helloworld\Observers\Block
grazie allo spazio dei nomi sbagliato.
Grazie, Alan Storm :)
AGGIORNARE:
Un altro tipo di errore è la dichiarazione dello spazio dei nomi errata con parte mancante dello spazio dei nomi, come in questo esempio:
Errore:
Generazione codice repository ... 1/7 [====> -----------------------] 14% 1 sec 50.0 MiBPHP Errore fatale: Impossibile dichiarare class Migration \ Step \ Version11410to2000Test, perché il nome è già in uso in /var/www/vhosts/rwld/vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php su linea 109
dove la riga 109 è la fine del file.
Nel file vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php
abbiamo trovato lo spazio dei nomi come Migration\Step
quando lo spazio dei nomi corretto dovrebbe essere Migration\Step\UrlRewrite
perché il percorso di questa classe è Migration/Step/UrlRewrite
. Dopo la modifica dello spazio dei nomi, Migration/Step/UrlRewrite
l'errore scompare.