cherepaxa Posted May 11, 2017 Share Posted May 11, 2017 Здравствуйте всем. Задался я желанием обновить свою престу с 1.7.0.6 на что то новое. Моё стремление упёрлос в сразу же в сплошные ошибки как с модулем 1-click так и с manual update. И в том и в том случае у меня выходила ошибка 500. Написал в поддержку для 1-клика, долго меняли статусы но ничего пока не изменилось для решения. Поэтому делюсь своим опытом, может кому-то пригодится. Делал все согласно http://doc.prestashop.com/display/PS16/Manual+update который подходит и для 1.7 версии 1. Функцию конструктора в файл classes\controller\FrontController.php /** * Controller constructor. * * @global bool $useSSL SSL connection flag */ public function __construct() { $this->controller_type = 'front'; global $useSSL; parent::__construct(); if (Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE')) { $this->ssl = true; } $this->guestAllowed = Configuration::get('PS_GUEST_CHECKOUT_ENABLED'); if (isset($useSSL)) { $this->ssl = $useSSL; } else { $useSSL = $this->ssl; } $this->objectPresenter = new ObjectPresenter(); $this->cart_presenter = new CartPresenter(); $this->templateFinder = new TemplateFinder($this->context->smarty->getTemplateDir(), '.tpl'); $this->stylesheetManager = new StylesheetManager( array(_PS_THEME_DIR_, _PS_PARENT_THEME_DIR_, _PS_ROOT_DIR_), new ConfigurationAdapter() ); $this->javascriptManager = new JavascriptManager( array(_PS_THEME_DIR_, _PS_PARENT_THEME_DIR_, _PS_ROOT_DIR_), new ConfigurationAdapter() ); $this->cccReducer = new CccReducer( _PS_THEME_DIR_.'assets/cache/', new ConfigurationAdapter(), new Filesystem() ); } Немножко изменил /** * Controller constructor. * * @global bool $useSSL SSL connection flag */ public function __construct() { $this->controller_type = 'front'; global $useSSL,$smarty; parent::__construct(); if (Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE')) { $this->ssl = true; } $this->guestAllowed = Configuration::get('PS_GUEST_CHECKOUT_ENABLED'); if (isset($useSSL)) { $this->ssl = $useSSL; } else { $useSSL = $this->ssl; } $this->objectPresenter = new ObjectPresenter(); $this->cart_presenter = new CartPresenter(); $this->context->smarty=$smarty; $this->templateFinder = new TemplateFinder($this->context->smarty->getTemplateDir(), '.tpl'); $this->stylesheetManager = new StylesheetManager( array(_PS_THEME_DIR_, _PS_PARENT_THEME_DIR_, _PS_ROOT_DIR_), new ConfigurationAdapter() ); $this->javascriptManager = new JavascriptManager( array(_PS_THEME_DIR_, _PS_PARENT_THEME_DIR_, _PS_ROOT_DIR_), new ConfigurationAdapter() ); $this->cccReducer = new CccReducer( _PS_THEME_DIR_.'assets/cache/', new ConfigurationAdapter(), new Filesystem() ); } т.к. почему то в массиве $this->context->smarty всегда приходил NULL после чего вылетала 500ошибка Потом вроде все шло пристойно, но в конце начался сыпатся вывод Xml результата. Виной стал открытый и не закрытый один узел в файле install\upgrade\upgrade.php Было $result = '<?xml version="1.0" encoding="UTF-8"?>'; if (empty($upgrade->hasFailure())) { if (!isset($_GET['action']) || 'UpgradeComplete' === $_GET['action']) { Configuration::updateValue('PS_HIDE_OPTIMIZATION_TIPS', 0); Configuration::updateValue('PS_NEED_REBUILD_INDEX', 1); Configuration::updateValue('PS_VERSION_DB', _PS_INSTALL_VERSION_); } $result .= '<action result="ok" id="">'."\n"; foreach ($upgrade->getInfoList() as $info) { $result .= $info."\n"; } foreach ($upgrade->getWarningList() as $warning) { $result .= $warning."\n"; } } else { foreach ($upgrade->getFailureList() as $failure) { $result .= $failure."\n"; } } Поменял на $result = '<?xml version="1.0" encoding="UTF-8"?>'; if (empty($upgrade->hasFailure())) { if (!isset($_GET['action']) || 'UpgradeComplete' === $_GET['action']) { Configuration::updateValue('PS_HIDE_OPTIMIZATION_TIPS', 0); Configuration::updateValue('PS_NEED_REBUILD_INDEX', 1); Configuration::updateValue('PS_VERSION_DB', _PS_INSTALL_VERSION_); } $result .= '<actions result="ok" id="">'."\n"; foreach ($upgrade->getInfoList() as $info) { $result .= $info."\n"; } foreach ($upgrade->getWarningList() as $warning) { $result .= $warning."\n"; } $result.='</actions>'."\n"; } else { foreach ($upgrade->getFailureList() as $failure) { $result .= $failure."\n"; } } И вроде все получилось. Link to comment Share on other sites More sharing options...
cherepaxa Posted May 12, 2017 Author Share Posted May 12, 2017 Радость была преждевременной Фронт офис после всего не хочет загружать стили и скрипты Что делать пока не знаю Link to comment Share on other sites More sharing options...
cherepaxa Posted May 15, 2017 Author Share Posted May 15, 2017 Таки все правильно сделал. Мешала тема которую устанавливал и пару модулей. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now