Автор Тема: Fatal error на странице товара  (Прочитано 479 раз)

24 Август 2014, 14:34:07
  • Пользователь
  • **
  • Сообщений: 97
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем привет!

Внезапно возникла странная ошибка.
При открытии страницы с описанием любого товара получаю белый экран с надписью Fatal error.
При чем, Fatal error получается, только если пользователь не авторизован в магазине.
Если войти под учетной записью клиента, страница товара отображается нормально.

Все остальные страницы сайта работают нормально.

В чем может быть проблема?
Пробовал отключить все модули, установленные в последнее время - ничего не помогает.
Очистка кеша также не помогает.

P.S. Вчера изменил доменное имя. Но навряд ли в этом проблема!?
24 Август 2014, 14:59:22
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1047
  • Репутация: +3/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Попробуй с другого браузера или компьютора зайти. Может это у тебя проблема.
24 Август 2014, 15:02:11
Ответ #2
  • Пользователь
  • **
  • Сообщений: 97
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Пробовал с 2-х компьютеров, и разных браузеров, результат один и тот же.

Вроде как нашел причину - модуль "Блок списка желаний", после отключения этого модуля ошибки больше нет.
Вот только что с этим модулем случилось?
Никаких изменений в него не вносил, все в стандартной конфигурации..
24 Август 2014, 15:04:24
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1047
  • Репутация: +3/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Может обновил? При обновлении некоторые модули обновляют и js библиотеки и шаблоны. Вот от этого и проблемы.
Включи показ ошибок на сайте и протестируй модуль.
24 Август 2014, 15:18:30
Ответ #4
  • Пользователь
  • **
  • Сообщений: 97
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
При включении показа ошибок получаю следующее (это только начало кода):

Array
(
    [0] => Array
        (
            [file] => /home/insecret/public_html/modules/blockwishlist/WishList.php
            [line] => 176
            [function] => displayError
            [class] => ToolsCore
            [type] => ::
            [args] => Array
                (
                )

        )

    [1] => Array
        (
            [file] => /home/insecret/public_html/modules/blockwishlist/blockwishlist.php
            [line] => 241
            [function] => getByIdCustomer
            [class] => WishList
            [type] => ::
            [args] => Array
                (
                    [0] =>
                )

        )

    [2] => Array
        (
            [file] => /home/insecret/public_html/classes/Hook.php
            [line] => 509
            [function] => hookProductActions
            [class] => BlockWishList
            [object] => BlockWishList Object
                (
                    [html:BlockWishList:private] =>
                    [id] => 65
                    [version] => 1.1.0
                    [database_version] =>
                    [registered_version] =>
                    [ps_versions_compliancy] => Array
                        (
                            [min] => 1.6
                            [max] => 1.6.0.9
                        )

                    [dependencies] => Array
                        (
                        )

                    [name] => blockwishlist
                    [displayName] => Блок списка желаний
                    [description] => Добавляет блок, содержащий списки желаний клиента.
                    [author] => PrestaShop
                    [module_key] =>
                    [description_full] =>
                    [additional_description] =>
                    [compatibility] =>
                    [nb_rates] =>
                    [avg_rate] =>
                    [badges] =>
                    [need_instance] => 0
                    [tab] => front_office_features
                    [active] => 1
                    [trusted] =>
                    [warning] =>
                    [enable_device] => 7
                    [limited_countries] => Array
                        (
                        )

                    [controllers] => Array
                        (
                        )

                    [_lang:protected] => Array
                        (
                        )

                    [_path:protected] => /modules/blockwishlist/
                    [local_path:protected] => /home/insecret/public_html/modules/blockwishlist/
                    [_errors:protected] => Array
                        (
                        )

                    [_confirmations:protected] => Array
                        (
                        )

                    [table:protected] => module
                    [identifier:protected] => id_module
                    [context:protected] => Context Object
                        (
                            [cart] => Cart Object
                                (
                                    [id] => 3
                                    [id_shop_group] => 1
                                    [id_shop] => 1
                                    [id_address_delivery] => 0
                                    [id_address_invoice] => 0
                                    [id_currency] => 1
                                    [id_customer] => 0
                                    [id_guest] => 4
                                    [id_lang] => 1
                                    [recyclable] => 0
                                    [gift] => 0
                                    [gift_message] =>
                                    [mobile_theme] => 0
                                    [date_add] => 2014-08-24 12:09:50
                                    [secure_key] =>
                                    [id_carrier] => 0
                                    [date_upd] => 2014-08-24 12:09:50
                                    [checkedTos] =>
                                    [pictures] =>
                                    [textFields] =>
                                    [delivery_option] =>
                                    [allow_seperated_package] => 0
                                    [_products:protected] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [id_product_attribute] => 836
                                                    [id_product] => 148
                                                    [cart_quantity] => 1
                                                    [id_shop] => 1
                                                    [name] => Gabriella Meggy 20den
                                                    [is_virtual] => 0
                                                    [description_short] =>

Возможно, обновился модуль.
Что-то сегодня обновлял, не помню, какие именно модули.
24 Август 2014, 15:23:11
Ответ #5
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86543
  • Репутация: +25419/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ошибка в определении пользователя
public static function getByIdCustomer($id_customer)
{
if (!Validate::isUnsignedId($id_customer))
die (Tools::displayError());
Только это ничего не дает, причину нужно искать в другом.
Проверьте лог ошибок сервера, там будет более полное описание.
25 Август 2014, 11:15:52
Ответ #6
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22315
  • Репутация: +17114/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Причина в том, что он и не должен определять ид клиента, если тот не вошел на сайт.
Просто подставить проверку на сохраненную сесиию  и не будет ошибки.
В основном файле blockwishlist.php перед использованием функции
WishList::getProductByIdCustomerнужно подставить проверку
if($this->context->customer->id)
    $this->smarty->assign(
array(
'id_wishlist' => $id_wishlist,
'isLogged' => true,
'wishlist_products' => ($id_wishlist == false ? false : WishList::getProductByIdCustomer($id_wishlist, $this->context->customer->id, $this->context->language->id, null, true)),
'wishlists' => $wishlists,
'ptoken' => Tools::getToken(false)
)
);
else
    $this->smarty->assign(array('wishlist_products' => false, 'wishlists' => false));
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
25 Август 2014, 17:46:39
Ответ #7
  • Пользователь
  • **
  • Сообщений: 97
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
На гитхабе уже решили эту проблему:
http://forge.prestashop.com/browse/PSCSX-3115

Спасибо всем, кто откликнулся.