Parse error syntax error unexpected in opencart

Hi Beginning to pull my hair out trying to resolve this issue. I am getting this error

Hi
Beginning to pull my hair out trying to resolve this issue.
I am getting this error

Parse error: syntax error, unexpected ‘if’ (T_IF), expecting function (T_FUNCTION) or const (T_CONST) in /home/xxx/xxx_storage/modification/catalog/controller/common/footer.php on line 52

I am running Journal 3 on OC v3.0.3.2

All was going well, but not now … any help or suggestions would be appreciated

Code: Select all

<?php
class ControllerCommonFooter extends Controller {
	public function index() {

            if (defined('JOURNAL3_ACTIVE') && !$this->journal3->document->isPopup()) {
                $this->journal3->settings->set('desktop_main_menu', $this->load->controller('journal3/main_menu', array('module_type' => 'main_menu', 'module_id' => $this->journal3->settings->get('headerMainMenu'), 'id' => 'main-menu')));
                $this->journal3->settings->set('desktop_main_menu_2', $this->load->controller('journal3/main_menu', array('module_type' => 'main_menu', 'module_id' => $this->journal3->settings->get('headerMainMenu2'), 'id' => 'main-menu-2')));
                $this->journal3->settings->set('desktop_top_menu', $this->load->controller('journal3/top_menu', array('module_type' => 'top_menu', 'module_id' => $this->journal3->settings->get('headerTopMenu'))));
                $this->journal3->settings->set('desktop_top_menu_2', $this->load->controller('journal3/top_menu', array('module_type' => 'top_menu', 'module_id' => $this->journal3->settings->get('headerTopMenu2'))));
                $this->journal3->settings->set('desktop_top_menu_3', $this->load->controller('journal3/top_menu', array('module_type' => 'top_menu', 'module_id' => $this->journal3->settings->get('headerTopMenu3'))));

                if ($this->journal3->document->hasClass('mobile-header-active')) {
                    $this->journal3->settings->set('mobile_main_menu', $this->load->controller('journal3/main_menu', array('module_type' => 'main_menu', 'module_id' => $this->journal3->settings->get('headerMobileMainMenu'))));
                    $this->journal3->settings->set('mobile_top_menu', $this->load->controller('journal3/top_menu', array('module_type' => 'top_menu', 'module_id' => $this->journal3->settings->get('headerMobileTopMenu'))));
                }

                $data['footer_menu'] = $this->load->controller('journal3/footer_menu', array('module_type' => 'footer_menu', 'module_id' => $this->journal3->settings->get('footerMenu')));
            }
            
		$this->load->language('common/footer');

		$this->load->model('catalog/information');

		$data['informations'] = array();

		foreach (defined('JOURNAL3_ACTIVE') ? array() : $this->model_catalog_information->getInformations() as $result) {
			if ($result['bottom']) {
				$data['informations'][] = array(
					'title' => $result['title'],
					'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id'])
				);
			}
		}

		$data['contact'] = $this->url->link('information/contact');
		$data['return'] = $this->url->link('account/return/add', '', true);
		$data['sitemap'] = $this->url->link('information/sitemap');
		$data['tracking'] = $this->url->link('information/tracking');
		$data['manufacturer'] = $this->url->link('product/manufacturer');
		$data['voucher'] = $this->url->link('account/voucher', '', true);
		$data['affiliate'] = $this->url->link('affiliate/login', '', true);
		$data['special'] = $this->url->link('product/special');
		$data['account'] = $this->url->link('account/account', '', true);
		$data['order'] = $this->url->link('account/order', '', true);
		$data['wishlist'] = $this->url->link('account/wishlist', '', true);
		$data['newsletter'] = $this->url->link('account/newsletter', '', true);

		$data['powered'] = sprintf($this->language->get('text_powered'), $this->config->get('config_name'), date('Y', time()));

		}
		// Whos Online
		if ($this->config->get('config_customer_online')) {
			$this->load->model('tool/online');

			if (isset($this->request->server['REMOTE_ADDR'])) {
				$ip = $this->request->server['REMOTE_ADDR'];
			} else {
				$ip = '';
			}

			if (isset($this->request->server['HTTP_HOST']) && isset($this->request->server['REQUEST_URI'])) {
				$url = ($this->request->server['HTTPS'] ? 'https://' : 'http://') . $this->request->server['HTTP_HOST'] . $this->request->server['REQUEST_URI'];
			} else {
				$url = '';
			}

			if (isset($this->request->server['HTTP_REFERER'])) {
				$referer = $this->request->server['HTTP_REFERER'];
			} else {
				$referer = '';
			}

			$this->model_tool_online->addOnline($ip, $this->customer->getId(), $url, $referer);
		}

		$data['scripts'] = $this->document->getScripts('footer');

		return $this->load->view('common/footer', $data);
	}
}

Last edited by straightlight on Tue Feb 11, 2020 7:13 am, edited 1 time in total.

  1. Приветствую сообщество.
    Я новенький, вникаю быстро и сознательно, постараюсь максимально изложить проблему

    Установил последнюю сборку Oc 2.1.0.1
    Сразу начал устанавливать тему купленную на Themeforest
    Всё делал по инструкции шаг за шагом.
    Процессе, после добавления модулей выдаёт ошибку во фронтэнде

    Parse error
    : syntax error, unexpected ‘elseif’ (T_ELSEIF) in /srv/users/serverpilot/apps/levillage/public/vqmod/vqcache/vq2-catalog_controller_common_seo_url.php on line 130

    Если файл модуля: vqmod/xml/simple_blog_catalog.xml
    отключить (перенести в каталог vqmod/xml/disabled/simple_blog_catalog.xml) — то всё работает, значит вероятно проблема в нём.

    Подскажите куда копать что делать?
    На оригинальной версии Opecart (не русская сборка) всё отлично

    Вложения:

  2. simple_blog_catalog.xml неправильно модифицирует файл .
    Зайдите по пути catalog/controller/common/seo_url.php и найдите там файл seo_url.php и seo_url.php-original
    Файл seo_url.php переименуйте во что нибудь, а seo_url.php-original переименуйте seo_url.php
    Все заработает.

    Дело в том, что в русской сборке seo_url.php изменен для нормальной работы, а вкумод не может точно видимо изменить его, вот и проблема.

    Хоть файл из русской сборке seo_url.php, составлен так что конфликтов должно быть минимум, но при левых вкумодах, они бывают.

  3. Во вложении файл от русской сборки. Исправил переносы строк. Попробуйте..

    Вложения:


    Инна, Ален и Rig нравится это.

  4. Спасибо большое, пока работает.
    А что конкретно вы сделали?
    (я до вашего сообщения пробовал менять seo_url.php на оригинальный, но у меня почему то результата не было.
    а после вашего сообщения попробовал второй раз и сработало — видно магия форума!)

  5. я же говорю, добавил переносы в файл как и в оригинале. Теперь seo_url станет еще лучше ))


  6. Muhin

    Muhin
    Пользователь

    Сообщения:
    83
    Симпатии:
    3

    У меня тоже возникли ошибки в сео с модулем Multivendor от wabaay!
    Помогите, пожалуйста найти ошибку на файле!
    не работает seo-ссылки вендоров
    если вести выходит site.com/seo_link(vendor)/?vendor=id
    а должно site.com/seo_link(vendor)
    и работает так index.php?route=module/vendorlogo/visitstore&vendor_id=8

    Вложения:


  7. Muhin

    Muhin
    Пользователь

    Сообщения:
    83
    Симпатии:
    3

    почему конфликт возникает — никто не знает?

  8. После обновления модификатора , все возвращается назад.Может еще где надо поправить?

  9. уточните, что возвращается?

  10. в файл seo_url.php возвращает первоначальный код, который в последствии выводит ту-же ошибку о которой описывалось выше.

  11. в файле не может возвращаться код, если вы не пытаетесь отредактировать файл в кеше модификатора


OpenCart Russia Форум

Широко распространенная ошибка: «PHP Parse error: syntax error, unexpected ‘?’ in …» Смысл ее понятен из формулировки — парсер PHP столкнулся с синтаксической ошибкой в скрипте.
В первую очередь, конечно же нужно проверить скрипт или указанную в ошибке его часть, нет ли там действительно опечатки — незакрытая или лишняя скобка, точка, все что угодно.
Если Вы проверили все и уверены в синтаксисе, то следующее, что я рекомендую проверить — это кодировка файла. Откройте скрипт в вашем любимом текстовом редакторе,
я использую notepad++, и проверьте в какой кодировке сохранен файл. Если просто в UTF-8, то в этом может и быть причина.
Дело в том, что при сохранении файла в кодировке UTF-8 в самое начало файла добавляется специальная сигнатура. Называется она BOM — Byte Order Mark, Маркер последовательности байтов.
Фактически это символ(его код U+FEFF), поэтому парсер и начинает разбор синтаксиса с него, а не, например, с открывающего тэга <?php, поэтому для него весь синтаксис и сбивается.
Для решения проблемы нужно просто преобразовать файл в кодировку UTF-8 без BOM, сделать это можно в том же текстовом редакторе.

Notepad-utf8

То же самое можно сделать в командной строке на сервере, если так удобнее.
Смотрим наш скрипт в 16-ричном виде:

# head -n1 AppAsset.php | hexdump -C
00000000 ef bb bf 3c 3f 70 68 70 0a |…<?php.|
00000009

Видим, что перед тэгом <?php есть что-то. В Hex — это сигнатура «ef bb bf», что и указывает на то, что у нас в скрипте есть BOM.
Открываем скрипт в текстовом редакторе Vi, на многих серверах он есть.

# vi AppAsset.php

Далее, пока vi в командном режиме, набираем в нем команду

:set nobomb

Сохраняемся и выходим

:wq

Проверяем еще раз

# head -n1 AppAsset.php | hexdump -C
00000000 3c 3f 70 68 70 0a |<?php.|
00000006

Все отлично.

Хотя в некоторых случая причина ошибки может быть не в этом и придется искать дальше.
Опишу мой случай. После переноса сайта на другой хостинг вылетела эта ошибка. Причем парсер остановился именно на символе ‘?’.
Я, на всякий случай, проверил скрипт на наличие опечаток, но все было нормально. Парсер остановился на конструкции

$query = $_SERVER[‘QUERY_STRING’] ?? »;

Вроде бы все нормально, ошибок нет, вполне легально используется оператор ‘??’.
Дело оказалось в том, что изначально сайт был на хостинге с PHP версии 7, а переносился на версию 5.6.
А оператор объединения с null(??) был введен только в 7-й версии PHP, я это упустил.

http://php.net/manual/ru/migration70.new-features.php#migration70.new-features.null-coalesce-op

В итоге, после смены версии на 7-ю все заработало.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Parse error syntax error unexpected in denwer
  • Parse error syntax error unexpected expecting variable
  • Parse error syntax error unexpected expecting end of file in
  • Parse error syntax error unexpected end of file in что значит
  • Parse error syntax error unexpected end of file in wordpress

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии