今日私は同じタイプのエラーを受け取りました:
PHPの致命的なエラー:クラスClass \ Name \ Hereを宣言できません。名前が/var/www/m2/magento2/app/code/path/to/the/class.phpの100行目ですでに使用されています
ここで、100行目はファイルの終わりです。
約4時間のデバッグの後、私は本当にその理由を見つけました。名前空間宣言の誤植です。最後の瞬間まで、名前の宣言の誤植だとは思わなかったが、すべての名前を書き直したところ、間違いはなくなった。この記事は非常に役に立ちました:
しばらく頭をかいて、何が起こっているのだろうと思って、結局これだと気づく
Pulsetorm
つまり、名前空間の名前を誤って入力したため、最初のオートロードがクラスファイルをロードするときに、探しているクラスが定義されていないため、2番目のオートローダー(通常はComposerがロードします)が再度ロードし、同じものを再定義しようとします。正しくないクラス。
つまり、Magentoはクラスを求めていました
Pulsestorm\Helloworld\Observers\Block
しかし私は定義しました
Pulsetorm\Helloworld\Observers\Block
間違った名前空間のおかげです。
ありがとう、アラン・ストーム:)
更新:
このエラーの別のタイプは、次の例のように、名前空間の一部が欠落している誤った名前空間宣言です。
エラー:
リポジトリコード生成... 1/7 [====> -----------------------] 14%1秒50.0 MiBPHP致命的エラー:宣言できません名前が/var/www/vhosts/rwld/vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php onですでに使用されているため、Migration \ Step \ Version11410to2000Testクラス行109
ここで、109行目はファイルの終わりです。
ファイルvendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php
では、このクラスへのパスMigration\Step
がであるMigration\Step\UrlRewrite
ため、正しい名前空間が存在するはずのように名前空間が見つかりましたMigration/Step/UrlRewrite
。ネームスペースをMigration/Step/UrlRewrite
エラーに変更すると消えます。