Причина, по которой вы получаете эту ошибку
- У вас есть код PHP, который выдает предупреждения
- Magento работает с ошибкой обработки до 11
- Magento пытается записать ошибку и не может найти класс.
Код, о котором идет речь,
$this->WBSAPI_CurlCall ( "once?action=probe" , &$result) );
Вы передаете переменную по ссылке во время вызова (&$result
). Это осуждается в современных версиях PHP. Без специальной обработки ошибок вы получите предупреждение типа
PHP Warning: Call-time pass-by-reference has been deprecated;
Итак, пройдите в $result
без &
. Учитывая, что ваш метод объявил в своем прототипе параметр paramater как передачу по ссылке, это не изменит функционально ваш код. Это должно решить вашу непосредственную проблему.
Большая причина, по которой Magento выдает эту ошибку, - это пользовательский обработчик ошибок.
#File: app/code/core/Mage/Core/functions.php
function mageCoreErrorHandler($errno, $errstr, $errfile, $errline)
{
...
if (Mage::getIsDeveloperMode()) {
throw new Exception($errorMessage);
} else {
Mage::log($errorMessage, Zend_Log::ERR);
}
}
Поскольку вы не работаете в режиме разработчика , Magento пытается записать ошибку, используя константу Zend_Log
в качестве ее типа. Проблема заключается (или кажется) в том, что если ваша ошибка возникает слишком рано в процессе начальной загрузки / отправки Magento, Zend_Log
еще не загружен и автозагрузчик об этом не позаботится. Вот почему вы получаете свою ошибку.
Вы должны исправить свой код, чтобы не использовать передачу времени вызова по ссылке (уберите &$result
из вашего вызывающего кода, но не из определений функций). Если вы не хотите этого делать, попробуйте включить lib/Zend/Log.php
ранее. Я думаю, что это плохая идея, поэтому я оставлю инструкции в качестве упражнения для читателя.
Кроме того, для тех, кто не знаком с термином «передача вызова по ссылке», это означает, что переменная должна передаваться по ссылке при вызове метода .
foo(&$bar);
Передача ссылки на функцию
$bar = &baz;
foo($bar);
Или объявление параметра в прототипе метода, указывающее, что его следует передать по ссылке
public function applyInApp(&$content)
{
}
все еще допустимый код PHP.