0 Пользователей и 1 Гость просматривают эту тему.
  • 38 Ответов
  • 14985 Просмотров
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
У меня после обновления на 3.2 выскочил белый лист в админке и на фронте. Я пофиксил баги, вызывающие ошибку и все заработало. проблема была в том что в JPlugin (если не ошибаюсь - базовый класс от которого расширяются плагины) не объявлена $app, а в некоторых плагинах она вызывалась через $this->app, что приводило к фатальной ошибке.

При выходе апдейта 3.2.1 я подумал что эти недочеты устранены и обновился, но как оказалось грабли и ныне там где и были. Перелил весь дистрибутив 3.2.1 поверх, не помогло, пришлось снова руками исправлять ошибки. Так у всех или только у меня?

Ошибки:
Код
PHP Fatal error:  Call to a member function get() on a non-object in /public_html/plugins/system/remember/remember.php on line 94

PHP Fatal error:  Call to a member function checkSession() on a non-object in /public_html/plugins/user/joomla/joomla.php on line 189
PHP Fatal error:  Call to a member function getQuery() on a non-object in /public_html/plugins/user/joomla/joomla.php on line 199

PHP Fatal error:  Call to a member function isAdmin() on a non-object in /public_html/plugins/authentication/cookie/cookie.php on line 51

Решение для тех кто в таком-же положении:
В плагине remember конструктор должен выглядеть так: (добавлена $this->app = JFactory::getApplication())
Код
public function __construct(&$subject, $config = array())
{
parent::__construct($subject, $config);
$this->app = JFactory::getApplication();
// Use domain and path set in config for cookie if it exists.
$this->cookie_domain = $this->app->get('cookie_domain', '');
$this->cookie_path = $this->app->get('cookie_path', '/');
$this->lifetime = time() + ($this->params->get('cookie_lifetime', '60') * 24 * 60 * 60);
$this->secure = $this->app->isSSLConnection();
$this->length = $this->params->get('key_length', '16');
}

В плагине Joomla и в плагине cookie надо вообще вставить конструктор:
Код
public function __construct(&$subject, $config = array())
{
parent::__construct($subject, $config);
$this->app = JFactory::getApplication();
$this->db = JFactory::getDBO();
}

« Последнее редактирование: 19.12.2013, 10:02:00 от Arkadiy »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Это странно, потому что такой проблемы у себя не заметил. Вот код, который добавляет $app и $db в качестве свойств в класс JPlugin. Это было сделано еще в 3.2.0. Плагин Remember вызывает parent::__construct($subject, $config); и эти свойства должны инициализироваться. У тебя нет?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
один в один ошибка с плагином remember
3.1.1 -> 3.2.1 обновлением из админки
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Во, нас прибыло, я еще в родитель не смотрел, руки не дошли.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Начал расследование. По факту у меня оказалось два файла с классом JPlugin.
/libraries/joomla/plugin/plugin.php
и
/libraries/cms/plugin/plugin.php

в /libraries/joomla/plugin/plugin.php слова app вообще нету,
в  /libraries/cms/plugin/plugin.php в конструкторе есть выражение:
Код
                if (property_exists($this, 'app'))
{
$reflection = new ReflectionClass($this);
$appProperty = $reflection->getProperty('app');

if ($appProperty->isPrivate() === false && is_null($this->app))
{
$this->app = JFactory::getApplication();
}
}
Получается что /libraries/joomla/plugin/plugin.php цепляется вместо нужного класса и $app остается пустым.

/libraries/joomla/plugin/plugin.php отсутствует в дистрибутиве 3.2.

Надо в обновлялке предусмотреть удаление устаревшего класса.
« Последнее редактирование: 21.12.2013, 09:33:27 от Arkadiy »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Это баг:
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=32568

Как я понял, пока единственным решением является отключение плагина "Запомнить меня" непосредственно перед обновлением.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Слишком много незнакомых буквосочетаний. Ты хочешь сказать что если отключить этот плагин, то обновление пройдет до конца и устаревший класс удалится?
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Была такая же ситуация. Я вообще изначально думал что если отключить вообще ВСЕ, процесс пройдет гладко и безболезненно. Отнюдь. Помимо этой были проблемы с удаление папок и обновлением БД. В результате довести до рабочего состояния сайт пока так и не удалось.
Это бидаль пича.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
У меня после описанных в первом посте действий сайт работает.
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Сейчас попробовал обновить сайт не на локалке а на хостинге. Создал подомен. Процесс тоже решил провести не совсем обычно. Как обычно отключил все что можно. Главное отличие - выбрал загрузку пакета по FTP. Также выключил сайт. Прошло все быстро и идеально. Я в шоке. Все работает. Ошибку remember не выдает. Вообще ошибок нет.
Это бидаль пича.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Изначально какой дистриб был установлен?
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Это бидаль пича.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Нет. Устанавливал вчера через компонент Обновление. Накатил сразу 3.2.1. Но дело мне кажется не в версии. Так как до этого 3.2.1 устанавливалась криво.
Это бидаль пича.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
А я думаю, что дело в 3.1, если ее небыло, то все путем, если была, то появляется лишний файл. Это можно вычислить только сравнением дистрибутивов, но на это времени нет.
*

mr_green

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
та же проблема. вы помогли спасибо! я обновлялся с 3.0.3
правда теперь не работает админка: Table 'denny1_inshop.hf5vi_postinstall_messages' doesn't exist SQL=SHOW FULL COLUMNS FROM `hf5vi_postinstall_messages`
что с базой может быть?
как понял нет таблицы _postinstall_messages как её правильно вписать? в sql слабо понимаю (
« Последнее редактирование: 29.12.2013, 00:40:40 от mr_green »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Сюда можете попасть - administrator/index.php?option=com_installer&view=database ? Там можно исправить ошибки базы.
*

mr_green

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
решил )) https://github.com/joomla/joomla-cms/blob/master/installation/sql/mysql/joomla.sql#L1495 (не знаю можно ли ссылки выкладывать, если что соррь) тут запрос нашёл на создание этой таблицы, выполнил, заработало.. за одно начал работать плагин Saxum IPLogger, видать после обновления.. всем спасибо ))
*

Coresolo

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
  • Fishishere.com©Ваш лучший улов в океане интернета!
У меня после обновления на 3.2 выскочил белый лист в админке и на фронте. Я пофиксил баги, вызывающие ошибку и все заработало. проблема была в том что в JPlugin (если не ошибаюсь - базовый класс от которого расширяются плагины) не объявлена $app, а в некоторых плагинах она вызывалась через $this->app, что приводило к фатальной ошибке.

При выходе апдейта 3.2.1 я подумал что эти недочеты устранены и обновился, но как оказалось грабли и ныне там где и были. Перелил весь дистрибутив 3.2.1 поверх, не помогло, пришлось снова руками исправлять ошибки. Так у всех или только у меня?

Ошибки:
Код
PHP Fatal error:  Call to a member function get() on a non-object in /public_html/plugins/system/remember/remember.php on line 94

PHP Fatal error:  Call to a member function checkSession() on a non-object in /public_html/plugins/user/joomla/joomla.php on line 189
PHP Fatal error:  Call to a member function getQuery() on a non-object in /public_html/plugins/user/joomla/joomla.php on line 199

PHP Fatal error:  Call to a member function isAdmin() on a non-object in /public_html/plugins/authentication/cookie/cookie.php on line 51

Решение для тех кто в таком-же положении:
В плагине remember конструктор должен выглядеть так: (добавлена $this->app = JFactory::getApplication())
Код
public function __construct(&$subject, $config = array())
{
parent::__construct($subject, $config);
$this->app = JFactory::getApplication();
// Use domain and path set in config for cookie if it exists.
$this->cookie_domain = $this->app->get('cookie_domain', '');
$this->cookie_path = $this->app->get('cookie_path', '/');
$this->lifetime = time() + ($this->params->get('cookie_lifetime', '60') * 24 * 60 * 60);
$this->secure = $this->app->isSSLConnection();
$this->length = $this->params->get('key_length', '16');
}

В плагине Joomla и в плагине cookie надо вообще вставить конструктор:
Код
public function __construct(&$subject, $config = array())
{
parent::__construct($subject, $config);
$this->app = JFactory::getApplication();
$this->db = JFactory::getDBO();
}


Столкнулся с такой же проблемой. Решил её так:
Совершил первое действие описанное в первом посте и после этого смог попасть в админку. На второе ума не хватило. Потом скачал заплатку по этой ссылке http://joomlacode.org/gf/download/frsrelease/19008/134339/Joomla_3.2.x_to_3.2.1-Stable-Patch_Package.zip установил ее из админки и все заработало.
Всем спасибо за подсказки.
*

belovpaha

  • Захожу иногда
  • 135
  • 1 / 0
 *DRINK* АЙ ДА МОЛОДЦА!
*

zegamind

  • Новичок
  • 5
  • 0 / 0
Аркадию большое спасибо.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

driada712

  • Новичок
  • 1
  • 0 / 0
Присоединяюсь к zegamind. Специально зарегистрировалась здесь, чтобы сказать спасибо Аркадию  :-* Изменила только плагин remember, и все заработало! Ура!
*

stylus83

  • Захожу иногда
  • 190
  • 0 / 0
У меня после обновления на 3.2 выскочил белый лист в админке и на фронте. Я пофиксил баги, вызывающие ошибку и все заработало. проблема была в том что в JPlugin (если не ошибаюсь - базовый класс от которого расширяются плагины) не объявлена $app, а в некоторых плагинах она вызывалась через $this->app, что приводило к фатальной ошибке.

При выходе апдейта 3.2.1 я подумал что эти недочеты устранены и обновился, но как оказалось грабли и ныне там где и были. Перелил весь дистрибутив 3.2.1 поверх, не помогло, пришлось снова руками исправлять ошибки. Так у всех или только у меня?

Ошибки:
Код
PHP Fatal error:  Call to a member function get() on a non-object in /public_html/plugins/system/remember/remember.php on line 94

PHP Fatal error:  Call to a member function checkSession() on a non-object in /public_html/plugins/user/joomla/joomla.php on line 189
PHP Fatal error:  Call to a member function getQuery() on a non-object in /public_html/plugins/user/joomla/joomla.php on line 199

PHP Fatal error:  Call to a member function isAdmin() on a non-object in /public_html/plugins/authentication/cookie/cookie.php on line 51

Решение для тех кто в таком-же положении:
В плагине remember конструктор должен выглядеть так: (добавлена $this->app = JFactory::getApplication())
Код
public function __construct(&$subject, $config = array())
{
parent::__construct($subject, $config);
$this->app = JFactory::getApplication();
// Use domain and path set in config for cookie if it exists.
$this->cookie_domain = $this->app->get('cookie_domain', '');
$this->cookie_path = $this->app->get('cookie_path', '/');
$this->lifetime = time() + ($this->params->get('cookie_lifetime', '60') * 24 * 60 * 60);
$this->secure = $this->app->isSSLConnection();
$this->length = $this->params->get('key_length', '16');
}

В плагине Joomla и в плагине cookie надо вообще вставить конструктор:
Код
public function __construct(&$subject, $config = array())
{
parent::__construct($subject, $config);
$this->app = JFactory::getApplication();
$this->db = JFactory::getDBO();
}


Я не могу найти такие строки у меня. Вот что у меня

<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.remember
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla! System Remember Me Plugin
 *
 * @package     Joomla.Plugin
 * @subpackage  System.remember
 * @since       1.5
 */

class PlgSystemRemember extends JPlugin
{
   /**
    * Application object.
    *
    * @var    JApplicationCms
    * @since  3.2
    */
   protected $app;

   /**
    * Remember me method to run onAfterInitialise
    * Only purpose is to initialise the login authentication process if a cookie is present
    *
    * @return  void
    *
    * @since   1.5
    * @throws  InvalidArgumentException
    */
   public function onAfterInitialise()
   {
      // No remember me for admin.
      if ($this->app->isAdmin())
      {
         return;
      }

      // Check for a cookie if user is not logged in
      if (JFactory::getUser()->get('guest'))
      {
         $cookieName = JUserHelper::getShortHashedUserAgent();

         // Check for the cookie
         if ($this->app->input->cookie->get($cookieName))
         {
            $this->app->login(array('username' => ''), array('silent' => true));
         }
      }
   }

   /**
    * Imports the authentication plugin on user logout to make sure that the cookie is destroyed.
    *
    * @param   array  $user     Holds the user data.
    * @param   array  $options  Array holding options (remember, autoregister, group).
    *
    * @return  boolean
    */
   public function onUserLogout($user, $options)
   {
      // No remember me for admin
      if ($this->app->isAdmin())
      {
         return true;
      }

      $cookieName = JUserHelper::getShortHashedUserAgent();

      // Check for the cookie
      if ($this->app->input->cookie->get($cookieName))
      {
         // Make sure authentication group is loaded to process onUserAfterLogout event
         JPluginHelper::importPlugin('authentication');
      }

      return true;
   }
}

*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Значит у вас более новая версия чем здесь обсуждается.
*

stylus83

  • Захожу иногда
  • 190
  • 0 / 0
Значит у вас более новая версия чем здесь обсуждается.
было написано обновить до 3.1.5. Так что ж можно сделать?
*

stylus83

  • Захожу иногда
  • 190
  • 0 / 0
при том что админка работает, только в панели управления выдает ошибку
Table 'arbolsem_admin.eqrxm_postinstall_messages' doesn't exist SQL=SHOW FULL COLUMNS FROM `eqrxm_postinstall_messages`
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
У вас ведь совсем другая ошибка. Первым делом создайте таблицу eqrxm_postinstall_messages
*

Phobosm10

  • Новичок
  • 1
  • 0 / 0
Всем привет. Помогите пожалуйста. После обновления с 3,0 на 3,2
Fatal error: Call to a member function isAdmin() on a non-object in Q:\home\phobos.kz\www\plugins\system\remember\remember.php on line 42
Тупо забить не могу. Руками работать не умею, Потому что Я дебил ))
Но готов научиться. Что делать?

   public function onAfterInitialise()
   {
      // No remember me for admin.
      if ($this->app->isAdmin())
      {
         return;
      }

      // Check for a cookie if user is not logged in
      if (JFactory::getUser()->get('guest'))
   
$this->app = JFactory::getApplication();   {
         $cookieName = JUserHelper::getShortHashedUserAgent();

         // Check for the cookie
         if ($this->app->input->cookie->get($cookieName))
         {
            $this->app->login(array('username' => ''), array('silent' => true));
         }
      }
   }

   /**
    * Imports the authentication plugin on user logout to make sure that the cookie is destroyed.
    *
    * @param   array  $user     Holds the user data.
    * @param   array  $options  Array holding options (remember, autoregister, group).
    *
    * @return  boolean
    */
   public function onUserLogout($user, $options)
   {
      // No remember me for admin
      if ($this->app->isAdmin())
      {
         return true;
      }

      $cookieName = JUserHelper::getShortHashedUserAgent();

      // Check for the cookie
      if ($this->app->input->cookie->get($cookieName))
      {
         // Make sure authentication group is loaded to process onUserAfterLogout event
         JPluginHelper::importPlugin('authentication');
      }

      return true;
   }
}

Как правильно вписать что он хочет не знаю.
« Последнее редактирование: 27.05.2014, 14:30:17 от Phobosm10 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Прошу помощи. Ошибка при обновлении на Joomla 4

Автор wmsonic

Ответов: 1
Просмотров: 927
Последний ответ 29.10.2023, 22:07:23
от Kukush
При обновлении ошибка 403 Forbidden Request forbidden by administrative rules

Автор THeCMeX

Ответов: 18
Просмотров: 2180
Последний ответ 14.07.2023, 17:13:19
от art22
Ошибка при обновлении с 3.10.10. до 4.х

Автор svd2014

Ответов: 1
Просмотров: 1452
Последний ответ 13.02.2023, 19:53:08
от weser
При обновлении с 3.10.10 на 3.10.11 перезаписались index.php и CSS

Автор androv77

Ответов: 2
Просмотров: 734
Последний ответ 09.11.2022, 11:40:34
от marksetter
Проблемы с Google Authenticator в Joomla 3

Автор sarvasvova

Ответов: 5
Просмотров: 2290
Последний ответ 19.10.2022, 12:34:15
от jaspritvid