Автор Тема: Ошибка удаления модуля seosayandexservices.  (Прочитано 995 раз)

29 Сентябрь 2017, 11:35:04
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Проблема при удалении модуля seosayandexservices. Любое действие по отношению к этому модулю выдает ошибку 404. Как его можно вырезать из престы?
29 Сентябрь 2017, 12:30:34
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В ручную удалять нужно. В модуле смотреть какие файлы он добавляет, какие таблицы создает и удалять эти файлы и таблицы.
29 Сентябрь 2017, 14:26:29
Ответ #2
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В ручную удалять нужно. В модуле смотреть какие файлы он добавляет, какие таблицы создает и удалять эти файлы и таблицы.
Этого не достаточно, так как остается метод который мешает при установке нового модуля.
29 Сентябрь 2017, 14:37:30
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
29 Сентябрь 2017, 15:06:03
Ответ #4
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ошибка:
Цитировать
Warning: array_key_exists(): The first argument should be either a string or an integer in /home/k/kadetf/kadetf.bget.ru/public_html/modules/seosayandexservices/seosayandexservices.php on line 252 Warning: Cannot modify header information - headers already sent by (output started at /home/k/kadetf/kadetf.bget.ru/public_html/modules/seosayandexservices/seosayandexservices.php:252) in /home/k/kadetf/kadetf.bget.ru/public_html/classes/Tools.php on line 217

public function getComponent($name)
{
$this->loadComponents();

return array_key_exists($name, $this->components) ? $this->components[$name] : null;
}

var_dump($name); показал bool(false)
29 Сентябрь 2017, 16:29:47
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Это не ошибка, предупреждение. Предупреждения не прерывают деинсталяцию. Проблема в чем-то другом.
02 Октябрь 2017, 10:29:01
Ответ #6
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Неужели ни кто с таким не сталкивался?
02 Октябрь 2017, 10:55:03
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Разработчику модуля напишите. Он точно заинтересован в исправлении ошибок.
Где-то в модуле заголовок пытается изменить после загрузки страницы, глупая ошибка. Но она не даст запустить скрипт. Может просто опечатка или не убрали функцию проверки.
04 Октябрь 2017, 13:21:12
Ответ #8
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Разработчику модуля напишите. Он точно заинтересован в исправлении ошибок.
Где-то в модуле заголовок пытается изменить после загрузки страницы, глупая ошибка. Но она не даст запустить скрипт. Может просто опечатка или не убрали функцию проверки.
Авторы не выходят на связь. Может как нибудь сам метод стереть для установки другого модуля?
Не удается корректно установить эти модули:

    yamodule :
        Не получается установить override: Метод setRequestUri класса Dispatcher уже переопределён в модуле seosayandexservices версии 1.0.2 в 2016-08-19 16:47:50 .
04 Октябрь 2017, 18:58:58
Ответ #9
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нужно самому добавить метод setRequestUri в класс Dispatcher.
05 Октябрь 2017, 09:21:11
Ответ #10
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В файле /public_html/classes/Dispatcher.php
class DispatcherCore{
...
    protected function setRequestUri()
    {
        // Get request uri (HTTP_X_REWRITE_URL is used by IIS)
        if (isset($_SERVER['REQUEST_URI'])) {
            $this->request_uri = $_SERVER['REQUEST_URI'];
        } elseif (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
            $this->request_uri = $_SERVER['HTTP_X_REWRITE_URL'];
        }
        $this->request_uri = rawurldecode($this->request_uri);

        if (isset(Context::getContext()->shop) && is_object(Context::getContext()->shop)) {
            $this->request_uri = preg_replace('#^'.preg_quote(Context::getContext()->shop->getBaseURI(), '#').'#i', '/', $this->request_uri);
        }

        // If there are several languages, get language from uri
        if ($this->use_routes && Language::isMultiLanguageActivated()) {
            if (preg_match('#^/([a-z]{2})(?:/.*)?$#', $this->request_uri, $m)) {
                $_GET['isolang'] = $m[1];
                $this->request_uri = substr($this->request_uri, 3);
            }
        }
    }
...
}

Или я не там ищу и метод не тот?
05 Октябрь 2017, 10:49:57
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В модуле в папке override находите файл Dispatcher.php, копируете метод setRequestUri.
На сайте в папке override находите файл Dispatcher.php добавляете в него код setRequestUri.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
05 Октябрь 2017, 12:03:48
Ответ #12
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В модуле в папке override находите файл Dispatcher.php, копируете метод setRequestUri.
На сайте в папке override находите файл Dispatcher.php добавляете в него код setRequestUri.

Собственно он там уже есть:
В модуле в папке override файл Dispatcher.php, метод setRequestUri.
*  @author    SeoSA<885588@bk.ru>
 *  @copyright 2012-2016 SeoSA
 *  @license   http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 *  International Registered Trademark & Property of PrestaShop SA
 */

class Dispatcher extends DispatcherCore
{
protected function setRequestUri()
{
parent::setRequestUri();
if (Module::isInstalled('seosayandexservices') && strpos($this->request_uri, 'module/seosayandexservices/'))
$this->request_uri = iconv('windows-1251', 'UTF-8', $this->request_uri);
}
}
В сайте в папке override файл Dispatcher.php метод  setRequestUri.
/*
    * module: seosayandexservices
    * date: 2016-08-19 16:47:50
    * version: 1.0.2
    */
    protected function setRequestUri()
{
parent::setRequestUri();
if (Module::isInstalled('seosayandexservices') && strpos($this->request_uri, 'module/seosayandexservices/'))
$this->request_uri = iconv('windows-1251', 'UTF-8', $this->request_uri);
}


Или вы предлагаете уже для нового(инсталационного) модуля это сделать?
05 Октябрь 2017, 12:47:49
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Удалить нужно в папке override файл Dispatcher.php, после удаления установить модуль.
05 Октябрь 2017, 16:05:49
Ответ #14
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Удалить нужно в папке override файл Dispatcher.php, после удаления установить модуль.
СПАСИБО! Получилось удалить старый модуль, и само собой установить другой.

Сделал так удалил этот файл в под папке classes, удалил на всякий случай файл class_index.php в папке cache.
Потом удалил модуль. Вернул на место файл Dispatcher.php, но уже без метода setRequestUri. Если этого не сделать обрушится публичная часть сайта.


Спасибо еще раз!