Hôm nay tôi nhận được lỗi cùng loại:
Lỗi nghiêm trọng của PHP: Không thể khai báo lớp Class \ Name \ Here, vì tên này đã được sử dụng trong /var/www/m2/magento2/app/code/path/to/the/ class.php trên dòng 100
trong đó dòng 100 là kết thúc của tập tin.
Khoảng sau 4 giờ gỡ lỗi tôi thực sự tìm thấy lý do: một lỗi trong khai báo không gian tên. Cho đến giây phút cuối cùng tôi đã không tin rằng đó là một lỗi đánh máy trong khai báo tên, nhưng khi tôi đã viết lại tất cả các tên một lần nữa - lỗi đã biến mất. Bài viết này rất hữu ích:
Tôi sẽ gãi đầu một lúc, tự hỏi chuyện gì đang xảy ra, và cuối cùng nhận ra đây là
Pulsetorm
tức là tôi đã nhập sai tên không gian tên và khi tự động tải ban đầu tải tệp lớp, nó sẽ không xác định lớp mà nó đang tìm, và sau đó một trình tải tự động thứ hai (thường là Trình soạn thảo) tải lại và cố gắng xác định lại cùng một lớp không đúng.
tức là Magento muốn cả lớp
Pulsestorm\Helloworld\Observers\Block
nhưng tôi đã xác định
Pulsetorm\Helloworld\Observers\Block
nhờ không gian tên sai.
Cảm ơn, Alan Storm :)
CẬP NHẬT:
Một loại lỗi khác là khai báo không gian tên không chính xác với phần thiếu của không gian tên, như trong ví dụ này:
Lỗi:
Tạo mã kho lưu trữ ... 1/7 [====> -----------------------] 14% 1 giây 50.0 MiBPHP Lỗi nghiêm trọng: Không thể khai báo lớp Migration \ Step \ Version11410to2000Test, vì tên này đã được sử dụng trong /var/www/vhosts/rwld/vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRrite dòng 109
trong đó dòng 109 là cuối của tập tin.
Trong tệp vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php
chúng tôi đã tìm thấy không gian tên như Migration\Step
khi không gian tên chính xác phải là Migration\Step\UrlRewrite
vì đường dẫn đến lớp này là Migration/Step/UrlRewrite
. Sau khi thay đổi không gian tên thành Migration/Step/UrlRewrite
lỗi.