Ошибка удаления модуля seosayandexservices.

Автор nicrurin, 29 сентября 2017, 11:35:04

« назад - далее »

nicrurin

Проблема при удалении модуля seosayandexservices. Любое действие по отношению к этому модулю выдает ошибку 404. Как его можно вырезать из престы?

Adik

В ручную удалять нужно. В модуле смотреть какие файлы он добавляет, какие таблицы создает и удалять эти файлы и таблицы.

nicrurin

Цитата: Adik от 29 сентября 2017, 12:30:34
В ручную удалять нужно. В модуле смотреть какие файлы он добавляет, какие таблицы создает и удалять эти файлы и таблицы.
Этого не достаточно, так как остается метод который мешает при установке нового модуля.

PrestaMan

Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

nicrurin

#4
Ошибка:
Цитировать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)

Adik

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

nicrurin

Неужели ни кто с таким не сталкивался?

Adik

Разработчику модуля напишите. Он точно заинтересован в исправлении ошибок.
Где-то в модуле заголовок пытается изменить после загрузки страницы, глупая ошибка. Но она не даст запустить скрипт. Может просто опечатка или не убрали функцию проверки.

nicrurin

Цитата: Adik от 02 октября 2017, 10:55:03
Разработчику модуля напишите. Он точно заинтересован в исправлении ошибок.
Где-то в модуле заголовок пытается изменить после загрузки страницы, глупая ошибка. Но она не даст запустить скрипт. Может просто опечатка или не убрали функцию проверки.
Авторы не выходят на связь. Может как нибудь сам метод стереть для установки другого модуля?
Не удается корректно установить эти модули:

    yamodule :
        Не получается установить override: Метод setRequestUri класса Dispatcher уже переопределён в модуле seosayandexservices версии 1.0.2 в 2016-08-19 16:47:50 .

DarinSr

Нужно самому добавить метод setRequestUri в класс Dispatcher.

nicrurin

В файле /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);
            }
        }
    }
...
}


Или я не там ищу и метод не тот?

PrestaMan

В модуле в папке override находите файл Dispatcher.php, копируете метод setRequestUri.
На сайте в папке override находите файл Dispatcher.php добавляете в него код setRequestUri.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

nicrurin

#12
Цитата: PrestaMan от 05 октября 2017, 10:49:57
В модуле в папке 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);
}



Или вы предлагаете уже для нового(инсталационного) модуля это сделать?

mistral

Удалить нужно в папке override файл Dispatcher.php, после удаления установить модуль.

nicrurin

#14
Цитата: mistral от 05 октября 2017, 12:47:49
Удалить нужно в папке override файл Dispatcher.php, после удаления установить модуль.
СПАСИБО! Получилось удалить старый модуль, и само собой установить другой.

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


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