Изменение в APC для Magento останавливает работу SimplePie

Мы использовали SimplePie в нашей установке Magento, чтобы без проблем перетаскивать наши сообщения в блоге на нашу домашнюю страницу в течение нескольких месяцев. Из-за некоторых других проблем с Magento наш веб-хост отключил код операции в APC. Как только мы это сделали, следующее ежечасное обновление SimplePie остановило загрузку домашней страницы и вернуло следующую ошибку в Apache:

[18 января 2012 г., 09:59:57] [ошибка] Неустранимая ошибка PHP: класс Zend_Log не найден в {корневом каталоге сервера}/lib/SimplePie/simplepie.inc в строке 738.

Я немного не понимаю, что происходит и что делать, чтобы это исправить. SimplePie поставляется в виде баннера/виджета, поэтому, если я помещу его на другую страницу категории, я получу те же результаты. (Страница останавливается на команде SimplePie) Я надеялся, что это будет что-то простое, например, изменение заставляет старый сохраненный RSS оставаться и не может быть изменен, но я не уверен.

Любая помощь будет очень признательна!


Код SimplePie не изменился и имеет версию 1.2.1. У меня есть страница /app/design/frontend/default/default/template/page/html/blog.phtml со следующим кодом.

<div class="col-narrow right sidebar-blog">
<h2>Our Gardening Blog</h2>

<?php

// Make sure SimplePie is included. You may need to change this to match the location of

require_once('lib/SimplePie/simplepie.inc');

// We'll process this feed with all of the default options.
$feed = new SimplePie();

// Set which feed to process.
$feed->set_feed_url('http://blog.americanmeadows.com/feed/');

// Run SimplePie.
$feed->init();

// This makes sure that the content is sent to the browser as text/html and the UTF-8 
$feed->handle_content_type();

    /*
    Here, we'll loop through all of the items in the feed, and $item represents the 
current item in the loop.
    */
    foreach ($feed->get_items(0,2) as $rss_item):
    ?>

<div class="article-teaser">
<p><span><?php echo $rss_item->get_date('F j, Y'); ?></span></p>
<h2 class="article-title"><a href="<?php echo $rss_item->get_permalink(); ?>"><?php echo $rss_item->get_title(); ?></a></h2>

<?php   if ($rss_item->get_item_tags('', 'thumbnail')) {$thumbnail = $rss_item->get_item_tags('', 'thumbnail'); echo "<img src='" . $thumbnail[0]['data'] . "'>";  } ?>
<p><?php echo $rss_item->get_description(); ?> <a class="more" href="<?php echo $rss_item->get_permalink(); ?>" target="_blank">Continue Reading</a></p>
</div>

<?php endforeach; ?>

</div>

Затем у меня есть баннер, который вызывает только следующие

{{block type="page/html" template="page/html/blog.phtml"}}

Я включаю этот баннер в виджет левого столбца на нашей домашней странице, чтобы он отображался.

Строки в SimplePie выдают ошибку

    function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null)
{
    // Other objects, instances created here so we can set options on them
    $this->sanitize =& new SimplePie_Sanitize; /* Error is thrown here */

    // Set options if they're passed to the constructor
    if ($cache_location !== null)
    {
        $this->set_cache_location($cache_location);
    }

Я думаю, что это то, что вам нужно, но я рад опубликовать больше.


person Greg Demetrick    schedule 18.01.2012    source источник
comment
Можете ли вы опубликовать соответствующий источник? SimplePie не использует какие-либо компоненты Zend, поэтому ваша версия должна быть адаптированной.   -  person Ryan McCue    schedule 18.01.2012
comment
Я только что проверил SimplePie.inc, и это была версия 1.2.1 для разработчиков. Я только что обновил его до текущей версии, но получаю те же результаты. Я добавлю, как у меня происходит доставка в основной вопрос.   -  person Greg Demetrick    schedule 18.01.2012
comment
Единственное на строке 738 в SimplePie является экземпляром SimplePie_Sanitize, поэтому он должен исходить откуда-то еще. (Кроме того, выпущена версия 1.2.1, поэтому версия 1.2.1-dev устарела)   -  person Ryan McCue    schedule 18.01.2012


Ответы (1)


Моя единственная мысль здесь заключается в том, что где-то что-то настраивает Zend_Log как регистратор ошибок. Проверьте set_error_handler() в своем коде и посмотрите, регистрируется ли он где-нибудь. (Вы можете перепроверить это, вызвав ошибку самостоятельно с помощью trigger_error() и посмотрев, что произойдет.)

Что касается того, почему возникает ошибка, я бы рискнул предположить, что это связано с тем, что вы используете 1.2.1 с PHP 4, что приведет к ошибкам E_DEPRECATED при назначении new по ссылке (например, в этой строке).

person Ryan McCue    schedule 18.01.2012
comment
Итак, вот ДЕЙСТВИТЕЛЬНО странная вещь. Если я добавлю trigger_error() на загружаемую страницу blogs.phtml, ни ошибка не будет создана, ни код не вызовет проблемы. Версия PHP 5.3.8 указывает на проблему установки, а не на ваш код. Спасибо, что обратили на это внимание! - person Greg Demetrick; 18.01.2012
comment
Его удаление снова создает ту же проблему? Возможно, здесь помогла просто очистка кеша кода операции. (Возможно, ваш хост сделал что-то странное и все еще загружает кеш) - person Ryan McCue; 19.01.2012
comment
Да, удаление снова вызывает ту же проблему. Я не удивлюсь, если мой хост отключит код операции и не очистит кеш. - person Greg Demetrick; 19.01.2012
comment
Дважды проверьте с вашим хостом и посмотрите, могут ли они найти какие-либо ошибки в своей конфигурации. Замените trigger_error() на что-то вроде echo ' ';, чтобы убедиться, что коды операций изменены, и посмотреть, происходит ли это по-прежнему. Кроме того, попробуйте добавить restore_error_handler() непосредственно перед выполнением new SimplePie() и посмотрите, поможет ли это чем-нибудь. - person Ryan McCue; 20.01.2012