Lỗi nghiêm trọng trong trang quản trị


15

Tôi đã cài đặt magento 1.7 và nó hoạt động tốt cho đến bây giờ.

Tôi nhập sản phẩm hàng ngày. Nếu có bất kỳ nhà sản xuất mới, tôi thêm nó vào thuộc tính Nhà sản xuất dựa trên.

Hôm nay, tôi đã thêm tùy chọn Nhà sản xuất mới trong back-end thuộc tính và đi nhập sản phẩm mà nó đã nhập thành công sản phẩm.

Nhưng sau đó tôi cố gắng mở bất kỳ trang nào trong trang quản trị Magento, nó kết thúc với thông báo lỗi bên dưới

Lỗi nghiêm trọng: Không thể ghi đè phương thức cuối cùng Mage_Core_Model_Abauge :: clearInstance () trong /var/www/html/app/code/core/Mage/Catalog/Model/Carget.php trên dòng 36

Line 36vừa bắt đầu xoăn {cho lớp này

class Mage_Catalog_Model_Category extends Mage_Catalog_Model_Abstract
{ <-- this is line 36

Và tôi đã kiểm tra Mage_Catalog_Model_Categorynhưng không có phương thức nào được định nghĩa bằng tên clearInstance. Nó thực sự gây phiền nhiễu.

FYI: Tôi không chạm vào một ký tự mã nào. Tôi chỉ sử dụng trang ADMIN để nhập sản phẩm và thêm một số thuộc tính bắt buộc


Tại sao -1? Tôi ở đây để được giúp đỡ mọi người. Đây có phải là nơi để đặt câu hỏi về Magento không.
ánh sáng mặt trời

Khoảng -1, đôi khi mọi người phản ứng kỳ lạ ... Về vấn đề của bạn, nó được viết trong thông báo lỗi của bạn, chỉ cần đọc nó. "KHÔNG THỂ NÂNG CẤP PHƯƠNG PHÁP CUỐI CÙNG ...". Bạn cố gắng ghi đè lên một cái gì đó không thể (bạn hoặc ai đó mã hóa sai)
Sylvain Rayé

@ SylvainRayé: Tôi thậm chí chưa từng chạm vào một ký tự mã nào, Bạn đã đọc câu hỏi chưa?, Tôi chỉ đang sử dụng trang web ADMIN để nhập sản phẩm. Đó là Magento đang gây ra lỗi và một lần nữa, chính Magento là người viết mã không tốt
ánh sáng mặt trời

@ SylvainRayé: Lỗi không nhẹ như bạn nghĩ, Đặc biệt khi nó đến từ mã lõi và ngay cả khi không chạm vào mã.
ánh sáng mặt trời

Các nàng tiên downvote khá hung dữ trong cộng đồng này, bỏ qua chúng. Có thể là một vấn đề trong đó phần mở rộng của bên thứ ba gây ra sự cố bằng cách mở rộng hoặc ghi đè lên lớp. Hãy thử và vô hiệu hóa tất cả các tiện ích mở rộng của bên thứ 3 để xem có giúp được không
Sander Mangel

Câu trả lời:


5

Hành vi này thường sẽ không xảy ra trừ khi bạn đã sửa đổi mã của Magento theo một cách nào đó - có thể thông qua tiện ích mở rộng của bên thứ 3, chỉnh sửa mã lõi hoặc tùy chỉnh chung.

Thực tế nó xảy ra trong quản trị viên, trước khi bất kỳ mô hình dữ liệu nào thực sự được tải (lưới sản phẩm, v.v.) sẽ ngụ ý rằng nó được gây ra bởi một tiện ích mở rộng - không phải dữ liệu đã nhập.

Nó đã xảy ra trên lưới sản phẩm - sau đó nó có thể là mô hình sản phẩm bị lỗi do nhập khẩu không thành công.

Nhưng sau khi tìm kiếm nhanh, có rất nhiều kết quả tìm kiếm google được lập chỉ mục của các cửa hàng Magento có cùng lỗi. Vì vậy, nó có thể là cốt lõi (mặc dù, chúng tôi không bao giờ đi qua nó) - nhưng tôi nghi ngờ.

Nhìn vào cốt lõi trong 1.7

+34 abstract class Mage_Catalog_Model_Abstract extends Mage_Core_Model_Abstract
+35 {
+36     /**
+37      * Identifuer of default store

Bạn không nên có bất kỳ ghi đè nào của clearInstance()phương thức. Trong thực tế, phương pháp này chỉ được khai báo một lần, trongapp/code/core/Mage/Core/Model/Abstract.php

final public function clearInstance()

Tôi đã thấy các lỗi về bản chất này xảy ra khi mọi người đã sử dụng nhầm includemột lớp bị ghi đè (kết quả là nó được tải hai lần).


Các lựa chọn tốt nhất của bạn là tuân theo quy trình gỡ lỗi tiêu chuẩn

  1. Khôi phục lõi sạch
  2. Khôi phục thư mục adminhtml sạch
  3. Đổi tên ./app/code/localthư mục
  4. Đổi tên ./app/code/communitythư mục

Và xem nếu vấn đề vẫn còn.


3

vấn đề ở đây là với APC, vô hiệu hóa APC và vấn đề sẽ biến mất.


vô hiệu hóa APC là không có tùy chọn. Nhưng ý kiến ​​hay! Tôi sẽ không bao giờ nghĩ về điều này! @sunlight bạn có cài đặt nhiều hơn một magento không? và định nghĩa cùng một tiền tố? Nó có thể là một vấn đề với một cửa hàng khác trong cùng một bộ đệm.
Fabian Blechschmidt

3

theo tiêu chuẩn php cho lỗi cụ thể này:

Lỗi nghiêm trọng: Không thể ghi đè phương thức cuối cùng Mage_Core_Model_Abauge :: clearInstance () trong /var/www/html/app/code/core/Mage/Catalog/Model/Carget.php trên dòng 36

nó rõ ràng có nghĩa là bạn đã mở rộng lớp Mage_Core_Model_Abstractbằng cách sử dụng

class Mage_Catalog_Model_Category extends Mage_Catalog_Model_Abstract

và trong lớp này, bạn đã clearInstance()định nghĩa là một hàm.

clearInstance()hàm là hàm cuối cùng nên bạn không được phép sửa đổi hàm này trong bất kỳ lớp mở rộng nào.

chính xác dòng 36 của bạn là gì bằng cách thêm một số mã giả ở trên và dưới dòng bạn giả sử là dòng 36.

Tôi đã thấy các nhà phát triển sửa đổi hoặc xem xét các tệp trong thư mục cụ thể trong đó với trình biên dịch được đặt thành các tệp lớp php thực sự nằm trong một số thư mục khác.


Tôi đã kiểm tra, tôi không có bất kỳ phương pháp nào có tên clearInstancetrong localcommunitypool. Tuy nhiên, tôi đã xóa từ khóa cuối cùng khỏi khai báo hàm để giải quyết vấn đề tạm thời, nhưng điều khó chịu với tôi là khi tôi đã thêm finaltừ khóa trở lại phía trước chức năng, mọi thứ vẫn hoạt động bình thường.
ánh sáng mặt trời

Có lẽ lớp của bạn được bao gồm hai lần như sonassi đã nêu: Tôi đã thấy các lỗi về bản chất này xảy ra khi mọi người sử dụng nhầm bao gồm một lớp bị ghi đè (dẫn đến việc nó được tải hai lần).
Giải thưởng

2

Tôi gặp vấn đề tương tự với phiên bản PHP 5.4 mới nhất trên một phiên bản Magento khác (trong khu vực lối vào) và không thể giải quyết vấn đề này bằng mã hoặc bất kỳ bộ nhớ cache nào. Bạn đã kiểm tra phiên bản?

Nếu đây là trường hợp, một bản rollback cho phiên bản trước sẽ đáng để thử.


2

Chỉ cần trải nghiệm điều này và tìm thấy một bài đăng lỗi chưa được xác nhận cho biết thiết lập rất giống nhau.

Đây dường như là một lỗi với sự kết hợp của

  • PHP 5.4.12+
  • Magento 1.7.x (1.13.x EE)
  • APC (3.1.x)

Apache error_log hiển thị AH00052: tín hiệu thoát XX pid con Lỗi phân đoạn (11)

Hai giải pháp tốt nhất cho vấn đề hiện tại có vẻ là:

A) Hạ cấp PHP xuống phiên bản hoạt động thấp hơn, có thể là 5.4.11 trở xuống.

B) Vô hiệu hóa APC, nếu không thể, xem A. :)


Tôi đang gặp vấn đề tương tự với PHP 5.3.27 với MariaDB, Magento 1.7.0.2, không có APC. Tôi cũng đang sử dụng Varnish + nginx. Đây là một vấn đề không thường xuyên buộc phải khởi động lại php-fpm, véc ni, nginx, v.v. Nhân tiện, tôi không tìm thấy bất kỳ phương thức ClearInstance không cốt lõi nào được khai báo ở bất cứ đâu. Có lẽ có một cái gì đó bao gồm các lớp học hai lần. Nhưng thật lạ, vì nếu đó là lỗi trình phân tích cú pháp, nó sẽ xảy ra mọi lúc.
Ricardo Martins

1

Tôi đã giải quyết vấn đề này cho Magento 1.9 bằng cách chuyển đổi cách chạy PHP (Trong bảng điều khiển lưu trữ, tôi đã chuyển Run PHP thành ... sang Ứng dụng CGI nhanh). Tôi hoàn toàn không biết những hậu quả khác mà sự thay đổi này có. Đang cố gắng để tìm ra điều đó vào lúc này.


0

Tôi đã mong đợi vấn đề tương tự. Không có khai báo phương thức ClearInstance ở bất cứ đâu ngoài nhóm lõi.

Tôi đã phân tích nginx access.log và error.log và nhận thấy rằng các lỗi này xuất hiện khi các bot Google và Bing truy cập trang web của tôi hàng nghìn lần trong vài phút trong các url khác nhau, thực hiện nhiều yêu cầu và truy vấn từ magento. Điều này đưa trang web của tôi xuống.

Tôi đoán tôi đã sửa nó bằng cách giảm sức mạnh của trình thu thập thông tin từ google và bing tại bảng điều khiển trang web của họ.

Bạn có thể sử dụng GoAccess hoặc Trình phân tích nhật ký yêu cầu để phân tích tệp nhật ký của bạn và xem tác nhân người dùng của khách truy cập hàng đầu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.