치명적인 오류 : 업그레이드 후 객체가 아닌 객체의 멤버 함수 rewrite () 호출


12

Magento 설치를 1.7.0.2에서 1.8.0.0으로 업그레이드하려고했습니다. 이제 모든 페이지에서 다음과 같은 오류가 발생했습니다.

Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php on line 165

모든 캐시를 지우고 컴파일러를 비활성화했다가 다시 컴파일 한 후 인덱서를 다시 인덱싱했습니다. 오늘 초 모든 것이 로컬 설치에서 잘 진행되었습니다. 일부 주문 및 클라이언트 데이터를 제외하고 동일한 설치입니다.

컴파일러가 활성화되면 오류가 다음과 같이 변경됩니다.

Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/includes/src/__default.php on line 17761

이 오류를 어떻게 디버깅 할 수 있습니까?


나도 1.8 마젠 토로 업그레이드했다. 내가 똑같은 문제가 있지만 내가 받고있는 오류가 varien에 없습니다 ... 아래 오류를 참조하십시오 :> 치명적 오류 : 객체가 아닌 객체에서 getProductAttribute () 멤버 함수 호출 > /home/shopk3if/public_html/app/design/frontend/base/default/template/catalog/product/price.phtml> 50 행의 plz는 개발자가 아니므로 코드를 작성하는 데 도움을줍니다 ...

컴파일이 해제되어 있습니까?
brentwpeterson

@MichaelvanEijden 이것의 근본 원인을 추적 할 수 있었습니까?
Alan Storm

1
@AlanStorm 어떤 이유로 업그레이드 중에 전송 된 파일의 일부만있었습니다. 당신의 대답은 나를 올바른 장소로 데려 왔습니다. 감사!
Michael

나는 같은 문제가 .....하지만 이제는 모든 파일을 magento ZIP 설치 아카이브의 내용으로 덮어 쓰려고했지만 .... 도움이되지 않았습니다. 그것은 루오 디버그 세션이 될 것입니다! 지금까지 문제없이 Magento를 업데이트하지 않았습니다!
cljk

답변:


5

165 행을 보면

#File: app/code/core/Mage/Core/Controller/Varien/Front.php
$this->_getRequestRewriteController()->rewrite();

이 메소드 _getRequestRewriteController는 객체를 반환해야합니다. 어떤 이유로 시스템에서 객체를 반환하지 않습니다.

그 메소드 정의를 살펴보면 다음과 같은 것을 볼 수 있습니다

protected function _getRequestRewriteController()
{
    $className = (string)Mage::getConfig()->getNode('global/request_rewrite/model');

    return Mage::getSingleton('core/factory')->getModel($className, array(
        'routers' => $this->getRouters(),
    ));
}

마법사는 global/request_rewrite/model구성 노드를보고 클래스 별명을 찾습니다. 상점 시스템에서 이것은

core/url_rewrite_request

그런 다음 Magento가 모델을 인스턴스화하는 데 사용합니다. 내 두 가지 추측은

  1. 여기에 Magento가 객체를 인스턴스화하지 못하게하는 다른 클래스 이름이 잘못된 모듈이 있습니다.

  2. 시스템에 Mage_Core_Model_Url_Rewrite_Request클래스 파일 (at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php) 이 없습니다.이 파일 은 Magento 1.8의 새로운 기능입니다.


1
또한 아래 @navotjer의 답변 / 설명을 참조하십시오.
Alan Storm

7

나는 같은 문제가 있었고 캐시를 지우는 것 외에도 / var 및 하위 디렉토리에 대한 폴더 권한을 777로 설정해야했습니다 (걱정하지 마십시오. / var의 .htaccess 파일은 모든 것이 "인간적인"판독 가능).


1
새로운 Magento 코드베이스를 압축 해제하면 var폴더 에 대한 권한이 변경 될 수 있습니다. 이는 Magneto가 오래된 캐시 구성을 가진 시스템 var 폴더로 되돌릴 수 있음을 의미합니다.
Alan Storm

+1 내 하루를 구했다! 1.9.0.1로 1.6.0.1에서 업그레이드되었습니다
toesslab

2

memcached와 같은 캐시 서버가있는 경우 다시 시작하십시오. 나는 같은 문제가 있었고이 방법으로 해결했습니다.


또는 Redis 인 경우 :redis-cli flushall
kiatng

2

redis 캐시를 지우십시오.

레디 스 클리

FLUSHALL

해결 된 문제입니다.


2

@AlanStorm의 설명을 따르려고했지만 결국 캐싱 문제라는 것을 알았습니다. 방금 rm -rf *모든 파일을 ~/public_html/var/cache가져와야 사이트가 올바르게로드 된 것을 알았습니다.


이렇게 간단합니다. 1.7에서 1.9로 업그레이드 할 때 동일한 문제가 발생했지만 캐시 폴더를 지우는 것을 잊었습니다.
Ricardo Martins

1

나는 같은 문제가 있습니다

Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php on line 165

/ var / cache에서 모두 삭제하면 문제가 해결됩니다.


0

var / cache의 모든 것을 삭제하면 문제가 해결되었습니다.

또한 유지 관리 페이지가 존재하기 때문에이 문제가 발생하기 전에 maintenance.flag 파일을 삭제해야했습니다.

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