Фатальна помилка на сторінках адміністратора


15

У мене встановлено magento 1.7, і він працював чудово до цих пір.

Я імпортую продукцію щодня. Якщо є якийсь новий виробник, я додаю його у розкривається атрибут Виробник.

Сьогодні я додав нову опцію Виробника в атрибут бек-енду і пішов імпортувати продукти, які успішно імпортували продукти.

Але після цього я намагаюся відкрити будь-яку сторінку на сайті адміністратора Magento. Це закінчується повідомленням про помилку нижче

Фатальна помилка: Неможливо змінити остаточний метод Mage_Core_Model_Ab Abstract :: clearInstance () в /var/www/html/app/code/core/Mage/Catalog/Model/Category.php у рядку 36

Лінія 36щойно починається фігурно {для цього класу

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

І я перевірив, Mage_Catalog_Model_Categoryале немає методу, визначеного ім'ям clearInstance. Це дійсно дратує.

FYI: Я не торкнувся жодного символу коду, я просто використовую сайт ADMIN для імпорту продуктів та додавання деяких необхідних атрибутів


Чому -1? Я тут, щоб отримати допомогу людям. Хіба це не місце для запитань про Magento.
сонячне світло

Близько -1, іноді люди реагують дивно ... Про вашу проблему написано у вашому повідомленні про помилку, просто прочитайте. "НЕ МОЖУТЬ ЗАМОВИТИ ЗАКЛЮЧНИЙ МЕТОД ...". Ви намагаєтеся перекрити щось, чого не можете (ви або хтось, хто погано кодує це)
Sylvain Rayé

@ SylvainRayé: Я навіть не торкнувся жодного символу коду, Ви читали питання? Я просто використовую веб-сайт ADMIN для імпорту продукту. Це Magento, який кидає помилку, і знову це Magento, який погано кодує
сонячне світло

@ SylvainRayé: Помилка не настільки проста, як ви думаєте, особливо коли вона походить від основного коду і навіть коли не торкається коду.
сонячне світло

Феї низових в цій громаді досить агресивні, ігноруйте їх. Може бути проблемою, коли розширення третьої сторони викликає проблему шляхом розширення або перезапису класу. Спробуйте і вимкніть усі розширення третьої сторони, щоб побачити, чи це допомагає
Сандер Мангел

Відповіді:


5

Така поведінка зазвичай не відбудеться, якщо ви не змінили код Magento якимось чином - будь то через розширення сторонніх розробників, редагування основного коду або загальні налаштування.

Те, що відбувається у адміністратора, перед завантаженням реальних моделей даних (продуктова сітка тощо) означатиме, що це спричинено розширенням, а не імпортованими даними.

Це траплялося в продуктовій сітці - тоді вона могла бути винною моделлю продукту внаслідок невдалого імпорту.

Але після швидкого пошуку, існує багато індексованих результатів пошуку Google в магазинах Magento з однаковою помилкою. Отже, це може бути в основі (хоча ми ніколи цього не стикалися) - але я сумнівно.

Дивлячись на ядро ​​в 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. Відновіть чистий адміністратор dir
  3. Перейменуйте ./app/code/localкаталог
  4. Перейменуйте ./app/code/communityкаталог

І подивіться, чи проблема не зникає.


3

проблема тут у APC, відключіть APC, і проблема піде.


вимкнення APC не є можливим. Але гарна ідея! Я б ніколи про це не думав! @sunlight у вас встановлено більше одного магенто? і визначив той самий префікс? Це може бути проблема з іншим магазином всередині того самого кеша.
Фабіан Блешшмідт

3

Виходячи із стандартів php для цієї конкретної помилки:

Фатальна помилка: Неможливо змінити остаточний метод Mage_Core_Model_Ab Abstract :: clearInstance () в /var/www/html/app/code/core/Mage/Catalog/Model/Category.php у рядку 36

це ясно вказує на те , що у вас є розширений клас , Mage_Core_Model_Abstractвикористовуючи

class Mage_Catalog_Model_Category extends Mage_Catalog_Model_Abstract

і в межах цього класу ви clearInstance()визначили функцію.

Оскільки clearInstance()функція є кінцевою функцією, тому вам заборонено змінювати цю функцію в будь-якому розширеному класі.

який саме ваш рядок 36, додавши код манекена над і під рядком, який ви вважаєте, це рядок 36.

Я бачив розробників, які змінюють або розглядають файли в певній папці, де, як і компілятор, встановлений на справжні файли класу php, є в якійсь іншій папці.


Я перевірив, у мене немає якогось - якого методу з ім'ям clearInstanceв localі communityбасейні. Однак я вилучив остаточне ключове слово з декларації функції, щоб тимчасово вирішити проблему, але мене дратує те, що коли я додаю finalключове слово ще в передній частині функції, все ще працює належним чином.
сонячне світло

Можливо, ваш клас потрапляє вдвічі, як заявляє sonassi: Я бачив помилки подібного характеру, коли люди помилково використовували включати для перекритого класу (в результаті чого його завантажували двічі).
Oscprofessionals

2

У мене була та сама проблема з останньою версією PHP 5.4 для іншої версії Magento (в області фронту), і я не міг вирішити це за допомогою коду чи будь-яких кеш-пам'яті. Ви перевірили версію?

У такому випадку варто спробувати відкат до попередньої версії.


2

Щойно пережив це і виявив непідтверджене повідомлення про помилку, в якому зазначалося дуже схоже налаштування.

Здається, це помилка з комбінацією

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

Apache error_log показує AH00052: сигнал виходу дочірнього піда XX Сегментація (11)

Два найкращих рішення проблеми на даний момент, як здається, є:

A) Поверніть PHP до нижчої робочої версії, можливо, 5.4.11 або нижче.

B) Вимкнути APC, якщо неможливо, див. А. :)


У мене виникають ті ж проблеми з PHP 5.3.27 з MariaDB, Magento 1.7.0.2, без APC. Я також використовую Varnish + nginx. Його періодична проблема, яка змушує іноді перезапускати php-fpm, лак, nginx тощо. До речі, я не знайшов жодного непрофільного методу clearInstance декларованого ніде. Можливо, є щось, включаючи заняття двічі. Але це дивно, адже якби це була помилка парсера, вона траплялася б щоразу.
Рікардо Мартінс

1

Я вирішив цю проблему для Magento 1.9 шляхом переключення способу запуску PHP (На панелі керування хостингом я пересунув Запустити PHP як ... на швидкий додаток CGI). Я абсолютно не маю уявлення, які ще наслідки має ця зміна. Намагаюся розібратися в цьому на даний момент.


0

Я очікував тієї ж проблеми. Ніде з ядра пулу не було декларування методу clearInstance .

Я проаналізував свої nginx access.log та error.log і помітив, що ці помилки з’являються, коли боти Google і Bing відвідують мій сайт тисячу разів за кілька хвилин у різних URL-адресах, роблячи багато запитів і запитів від magento. Ці речі знімають мій сайт.

Я думаю, що я це виправив, зменшивши потужність сканера від google та перекусивши на панелі веб-майстрів.

Ви можете використовувати GoAccess або Request Log Analyzer, щоб проаналізувати файл журналу та побачити головного відвідувача-агента користувача.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.