2015-10-23 3 views
1

Я обновил magento с версии 1.9.1.1 до 1.9.2.1. Процесс проверки всегда терпит неудачу и перенаправляется обратно на вашу страницу. Это ошибка я нашел в журнале ошибок сервера Apache:Неопределенная константа класса 'CHECK_USE_CHECKOUT'

PHP Fatal error: Undefined class constant 'CHECK_USE_CHECKOUT' in 
/var/www/app/code/local/Lotusbreath/OneStepCheckout/Model/Type/Onepage.php 
on line 108, referer: http://www.websitename.com/onestepcheckout/ 

Я думал, что расширение контроля было неисправно, поэтому я заменил его с исходным шаблоном Magento оформления заказа, появляется та же ошибка:

PHP Fatal error: Undefined class constant 'CHECK_USE_CHECKOUT' in 
/var/www/app/code/core/Mage/Checkout/Model/Type/Onepage.php on line 653, 
referer: http://www.website.com/checkout/onepage/ 

I проверил оба файла PHP для CHECK_USE_CHECKOUT и действительно, он там не определен. Вопрос в том, что раньше это работало хорошо. Я не уверен, что это обновление сломало что-то или это последнее исправление патча, которое я применил. Я попытался вернуть патч, но это тоже не сработало.

Это фрагмент из файла PHP Onepage.php, который содержит CHECK_USE материал:

$data['checks'] = Mage_Payment_Model_Method_Abstract::CHECK_USE_CHECKOUT 
     | Mage_Payment_Model_Method_Abstract::CHECK_USE_FOR_COUNTRY 
     | Mage_Payment_Model_Method_Abstract::CHECK_USE_FOR_CURRENCY 
     | Mage_Payment_Model_Method_Abstract::CHECK_ORDER_TOTAL_MIN_MAX 
     | Mage_Payment_Model_Method_Abstract::CHECK_ZERO_TOTAL; 

Является ли это причиной выплаты неудачу и перенаправляет обратно в корзину странице? Если да, то как я могу это исправить?

Заранее спасибо.

+0

Вы уверены, что патч подходит для edition.Because видимо этого класса doenst есть что постоянная https://docs.magentocommerce.com/Mage_Payment/Mage_Payment_Model_Method_Abstract.html#sec-const-summary – Mihai

+0

Привет, Да, я загружаю патч, соответствующий версии magento, которую я имел. Позже я загрузил и установил magento 1.9.2.1, который уже содержит последние исправления. –

+0

Константа 'CHECK_USE_CHECKOUT' является частью' Mage_Payment_Model_Method_Abstract'. Ошибка вызывается, когда она пытается проверить ее. Убедитесь, что Mage/Payment/Model/Method/Abstract.php находится на своем месте и соответствует загруженной и извлеченной проверке. –

ответ

0

Существует вероятность того, что ваши основные файлы были изменены.

Во время обновления файлы ядра будут перезаписаны, что может привести к удалению некоторого кода (добавленного должного нестандартного кодирования).

Так что если у вас есть резервная копия, то найдите отсутствующее определение и файл, который имел это.

@ Посмотрите на свой вход. Размещение локального файла приведет к переопределению основного файла. Это не стандартный подход Magenton, разработчик должен был расширить этот класс и изменить или добавить определенную функцию.

Я предлагаю вам убедиться, что все файлы в локальной папке Mage должны быть удалены каким-либо расширенным модулем.

+0

Спасибо Satish, файлы ядра не были изменены, это был файл в локальном пуле, который был изменен. См. Мой ответ ниже. Еще раз спасибо! –

+0

Я изменил свой ответ в соответствии с вашими комментариями. – oscprofessionals

+0

Я знаю, что локальные файлы будут переопределять ядра. Не я добавил локальный файл. Я считаю, что это было расширение. Во всяком случае, сейчас все хорошо. Итак, я считаю это решенным :) Спасибо за комментарии. –

0

Сообщение об ошибке ссылалось на этот класс Mage_Payment_Model_Method_Abstract. Я проверил его в основном файле, расположенном по адресу: app/code/core/Mage/Payment/Model/Method/Abstract.php. Этот файл имеет следующий фрагмент кода внутри класса Mage_Payment_Model_Method_Abstract:

/** 
* Bit masks to specify different payment method checks. 
* @see Mage_Payment_Model_Method_Abstract::isApplicableToQuote 
*/ 
const CHECK_USE_FOR_COUNTRY  = 1; 
const CHECK_USE_FOR_CURRENCY  = 2; 
const CHECK_USE_CHECKOUT   = 4; 
const CHECK_USE_FOR_MULTISHIPPING = 8; 
const CHECK_USE_INTERNAL   = 16; 
const CHECK_ORDER_TOTAL_MIN_MAX = 32; 
const CHECK_RECURRING_PROFILES = 64; 
const CHECK_ZERO_TOTAL   = 128; 

Теперь, был еще один Abstract.php файл, расположенный в местном бассейне в: приложение/код/​​местные/Mage/компенсации/модели/Method/Аннотация. PHP. Обратите внимание на (основное) и (локальное) различие в пути.

Этот файл в локальном пуле не содержит приведенного выше фрагмента. В файле также было несколько других отличий. Итак, что я сделал, я сделал резервную копию файла Abstract.php в локальном пуле. Затем скопировал абстрактный файл из ядра в локальный пул. Все снова начало работать.

Надеюсь, это поможет кому-то!

Смежные вопросы