[Решено] ошибка из за Register Globals off

Тема в разделе "OpenCart", создана пользователем sl0wm, 25 янв 2016.

Статус темы:
Закрыта.
  1. sl0wm

    sl0wm

    Регистрация:
    12 янв 2016
    Сообщения:
    51
    Симпатии:
    7
    ДОбого здрвия всем

    появляется такая ошибка
    The first argument should be either a string or an integer in /home/***/domains/***/public_html/index.php on line 138

    как можно решить ?
     
  2. skiv14

    skiv14

    Регистрация:
    9 июн 2015
    Сообщения:
    411
    Симпатии:
    159
    В любом случае сначала нужно смотреть, что в том файле в строке 138.
    Возможно, это поможет при поиске в яндексе решения этой проблемы.

    Если готового решения не нашли - выложить сюда то, что там находится.

    Также нужно пробовать самому решить.
    Перевод ошибки гугл транслейт - "Первый аргумент должен быть строкой или целым числом". Т.е. надо посмотреть, что там в 138 строке и дальше танцевать от этого.

    Ещё советы. Как правило, если не знаешь как сделать - надо отключить то, что может вызывать проблему.
    Например, поотключать модули вкмода, взять из бэкапа рабочий на тот момент index.php и сравнить с текущим, особенно рядом с этой строчкой.
    Вспомнить, что делали до возникновения ошибки. Может правили чего, может как раз этот index.php

    Короче, всё отключаем, если проблема устранена - включаем по частям.
     
  3. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.038
    Симпатии:
    774
    Для начала можно показать файл с ошибкой.
    И при чём тут Register Globals off?
     
  4. sl0wm

    sl0wm

    Регистрация:
    12 янв 2016
    Сообщения:
    51
    Симпатии:
    7
    дело в том, что сначала магазин развернул на денвере, а потом только переносил на хост
    сразу же после утановки вылезать начала эта ошибка. Единственное что сменилось, так это Register Globals

    относительно 138 строки, то там информация связанная с языками (в то время как язык только 1, и то, шел в комплекте к опенкарту)

    просто нашел несколько сообщений с такой же ошибкой, где говорили что решать именно нужно проблему с Register Globals

    Код:
    138. if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages)) {
    139.    $code = $session->data['language'];
    140. } elseif (isset($request->cookie['language']) && array_key_exists($request->cookie['language'], $languages)) {
    141.   $code = $request->cookie['language'];
    142. } else {
    143.    $detect = '';
    и пруф на решение с другого форума

    но решение не помогло , по крайней мере мне


    далее....потому как у меня дублируется магазин и на денвере, то просмотрел код и сравнил на расхождения....так вот, код идентичен, но на денвере все ок, а на хосте лезет ошибка
     
    Lasted edited by : 25 янв 2016
  5. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.038
    Симпатии:
    774
    Во-первых, значение директивы Register_Globals начиная с PHP 4.2 по умолчани и так off, а в PHP 5.4 её совсем удалили. Сомневаюсь, что у вас на хостинге версия ниже 5.4, а если всё же ниже, то либо переключитесь хотя бы на 5.4, либо меняйте хостинг.

    А во-вторых, проверьте, что у вас в $session->data['language']. Там явно что-то не то. А разница с Денвером в том, что вы смениил окружение.
     
  6. sl0wm

    sl0wm

    Регистрация:
    12 янв 2016
    Сообщения:
    51
    Симпатии:
    7
    [​IMG]

    ок - проверю
    --- Добавлено, 26 янв 2016 ---
    [​IMG]
    это home.tpl полностью


    и header.tpl

    а как можно найти $content_banner из home.tpl
    и $content_block из header?

    как я понял - проблема в том, что невозможно определить переменную
    значит надо найти фрагмент где эта переменная задавалась

    следовательно, можно отыскать этот блок в работающем магазине и впихнуть сюда ....дело остается за 1 - найти эти блоки кода, в которых задаются переменные
     
    Lasted edited by : 28 янв 2016
  7. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.038
    Симпатии:
    774
    Переменные задаются в одноимённом с шаблоном контроллере.
    В контроллере они выглядят так:
    $this->data['var_name'] - в ветке 1.5.x
    $data['var_name'] - в ветке 2.x

    А как решили проблему с ошибкой из первого поста?
     
  8. sl0wm

    sl0wm

    Регистрация:
    12 янв 2016
    Сообщения:
    51
    Симпатии:
    7
    перешел на базы php, почистил кэш, выключил глобал на хосте, выключил глобал в htaccess и в php.ini - все стало ок

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

    только вот осталась пара проблем

    [​IMG]

    но для этого отдельная тема
     
Статус темы:
Закрыта.