관리 페이지의 치명적인 오류


15

나는 magento 1.7을 설치했으며 지금까지는 잘 작동했습니다.

매일 제품을 수입합니다. 새로운 제조업체가있는 경우 드롭 다운 기반 제조업체 속성에 추가합니다.

오늘 저는 속성 백엔드에 새로운 제조업체 옵션을 추가하고 성공적으로 제품을 수입 한 제품을 수입했습니다.

그러나 그 후 Magento 관리 사이트에서 페이지를 열려고하면 아래 오류 메시지가 나타납니다.

치명적인 오류 : 36 행의 /var/www/html/app/code/core/Mage/Catalog/Model/Category.php에서 최종 메소드 Mage_Core_Model_Abstract :: clearInstance ()를 재정의 할 수 없습니다.

이 클래스의 라인 36이 막 시작 {되었습니다.

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

그리고 확인 Mage_Catalog_Model_Category했지만 name으로 정의 된 메소드가 없습니다 clearInstance. 정말 성가시다.

참고 : ADMIN 사이트를 사용하여 제품을 가져오고 필요한 속성을 추가하는 단일 코드 문자를 만지지 않았습니다.


왜 -1입니까? 나는 사람들을 돕기 위해 여기 있습니다. 이 곳은 마 젠토에 관해 질문 할 곳이 아닙니다.
햇빛

약 -1, 때로는 사람들이 이상하게 반응합니다 ... 문제에 대해서는 오류 메시지에 기록되어 있습니다. "캐논은 최종 방법을 덮어 씁니다 ...". 당신이 할 수없는 것 (당신이나 그것을 잘못 코딩하는 사람)을 무시하려고 노력하십시오
Sylvain Rayé

@ SylvainRayé : 코드의 단일 문자를 건드리지 않았는데, 질문을 읽었습니까?, 저는 ADMIN 사이트를 사용하여 제품을 가져 왔습니다. 오류를 던지는 것은 마 젠토 (Magento)이고, 다시 잘못 코딩하는 것은 마 젠토 (Magento)입니다
햇빛

@ SylvainRayé : 오류는 생각만큼 그리 크지 않습니다. 특히 핵심 코드에서 비롯되거나 코드를 건드리지 않을 때조차도 오류는 아닙니다.
햇빛

공손한 요정은이 공동체에서 매우 공격적입니다. 무시하십시오. 클래스를 확장하거나 덮어 써서 타사 확장 프로그램으로 인해 문제가 발생할 수 있습니다. 시도하고이 도움이 있는지 확인하기 위해 모든 제 3 회 파티 확장을 해제
샌더 사료 사탕

답변:


5

Magento의 코드를 어떤 방식 으로든 수정하지 않는 한 (이는 타사 확장 프로그램, 핵심 코드 편집 또는 일반 사용자 지정을 통해) 정상적으로 작동하지 않습니다.

실제로로드되는 데이터 모델 (제품 표 등) 이전에 관리자에서 발생한다는 사실은 가져 오기 된 데이터가 아닌 확장으로 인한 것입니다.

제품 그리드에서 발생 했으므로 가져 오기 실패로 인해 결함이있는 제품 모델 일 수 있습니다.

그러나 빠른 검색 후 동일한 오류로 Magento 상점의 색인화 된 Google 검색 결과가 많이 있습니다. 그래서 그것은 핵심에 있을 수 있습니다 (그러나 우리는 결코 그것을 보지 못했지만)-의심 스럽습니다.

1.7의 핵심을 보면

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

clearInstance()메소드를 재정의해서는 안됩니다 . 실제로이 메소드는 한 번만 선언됩니다.app/code/core/Mage/Core/Model/Abstract.php

final public function clearInstance()

사람들이 include재정의 된 클래스에 실수로 사용했을 때 (이 두 번로드 된 결과) 이 성격의 오류가 발생하는 것을 보았습니다 .


최선의 옵션은 표준 디버그 절차 를 따르는 것입니다

  1. 깨끗한 코어 복원
  2. 깨끗한 adminhtml 디렉토리 복원
  3. ./app/code/local디렉토리 이름 바꾸기
  4. ./app/code/community디렉토리 이름 바꾸기

문제가 지속되는지 확인하십시오.


3

여기서 문제는 APC에 있습니다. APC를 비활성화하면 문제가 사라집니다.


APC 비활성화는 옵션이 아닙니다. 그러나 좋은 생각입니다! 나는 이것을 결코 생각하지 않을 것이다! @sunlight 둘 이상의 마 젠토가 설치되어 있습니까? 같은 접두사를 정의? 동일한 캐시 내의 다른 저장소에 문제가있을 수 있습니다.
Fabian Blechschmidt

3

이 특정 오류에 대한 PHP 표준으로 이동 :

치명적인 오류 : 36 행의 /var/www/html/app/code/core/Mage/Catalog/Model/Category.php에서 최종 메소드 Mage_Core_Model_Abstract :: clearInstance ()를 재정의 할 수 없습니다.

그것은 당신이 수업 Mage_Core_Model_Abstract을 확장했다는 것을 분명히 의미합니다.

class Mage_Catalog_Model_Category extends Mage_Catalog_Model_Abstract

이 클래스 내 clearInstance()에서 함수로 정의했습니다.

마찬가지로 clearInstance()당신이 확장 한 클래스의이 기능을 수정하는 것이 허용되지 않도록 기능 최종 기능입니다.

위와 아래에 더미 코드를 추가하여 36 번째 줄은 정확히 36 번째 줄입니다.

컴파일러가 true로 설정된 PHP 클래스 파일이 다른 폴더에있는 특정 폴더의 파일을 수정하거나 조사하는 개발자를 보았습니다.


나는라는 이름의 방법이 없습니다, 확인 clearInstancelocalcommunity수영장. 그러나 문제를 일시적으로 해결하기 위해 함수 선언에서 최종 키워드를 제거했지만 함수 final앞에 키워드를 다시 추가해도 문제가 해결 되지 않습니다.
햇빛

아마도 sonassi가 말한 것처럼 수업이 두 번 포함되는 것 같습니다 : 사람들이 실수로 재정의 된 수업에 대해 include를 사용했을 때 (이 두 번로드 된 결과)이 성격의 오류가 발생하는 것을 보았습니다.
Oscprofessionals

2

다른 Magento 버전 (프론트 엔드 영역)의 최신 PHP 5.4 버전과 동일한 문제가 있었고 코드 또는 캐시 로이 문제를 해결할 수 없었습니다. 버전을 확인 했습니까?

이 경우 이전 버전으로 롤백하면 시도해 볼 가치가 있습니다.


2

방금 이것을 경험하고 매우 유사한 설정을 나타내는 확인되지 않은 버그 게시를 발견했습니다.

이것은 조합의 버그로 보입니다

  • PHP 5.4.12 이상
  • 마 젠토 1.7.x (1.13.x EE)
  • APC (3.1.x)

Apache error_log에 AH00052가 표시됨 : 자식 pid XX 종료 신호 분할 오류 (11)

현재 문제에 대한 두 가지 최상의 솔루션은 다음과 같습니다.

A) PHP를 5.4.11 이하의 낮은 작동 버전으로 다운 그레이드하십시오.

B) APC를 비활성화합니다. 가능하지 않은 경우 A를 참조하십시오. :)


APC없이 MariaDB, Magento 1.7.0.2에서 PHP 5.3.27과 동일한 문제가 발생합니다. 나는 또한 Varnish + nginx를 사용하고 있습니다. 때때로 PHP-fpm, varnish, nginx 등을 강제로 다시 시작하는 간헐적 문제입니다. 그런데 코어가 아닌 clearInstance 메소드를 어디서나 선언하지 못했습니다. 어쩌면 수업을 두 번 포함하는 것이있을 수 있습니다. 그러나 파서 오류 인 경우 매번 발생하기 때문에 이상합니다.
Ricardo Martins

1

PHP가 실행되는 방식을 전환하여 Magento 1.9의이 문제를 해결했습니다 (호스팅 제어판에서 Run PHP as ...를 Fast CGI Application으로 설정했습니다). 나는이 변화가 어떤 다른 결과를 가져 왔는지 전혀 모른다. 지금은 알아 내려고 노력 중입니다.


0

나는 같은 문제를 기대하고 있었다. 코어 풀 외부에 clearInstance 메소드 선언 이 없습니다 .

내 nginx access.log 및 error.log를 분석 한 결과 Google과 Bing 봇이 몇 분 안에 다른 URL로 수천 번 내 사이트를 방문하여 magento의 많은 요청과 쿼리를 할 때 이러한 오류가 나타납니다. 이로 인해 내 사이트가 다운됩니다.

나는 구글에서 크롤러 파워를 줄이고 그들의 웹 마스터 패널에서 빙글 빙글 돌려서 고쳤다 고 생각한다.

당신은 사용할 수 있습니다 GoAccess 또는 요청 로그 분석기를 로그 파일을 분석하고 최고 방문자의 사용자 에이전트를 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.