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

Arkadiy

  • Группа развития
  • 5351
  • 440
  • Крепитесь, други.
У меня после обновления на 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

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

Arkadiy

  • Группа развития
  • 5351
  • 440
  • Крепитесь, други.
*

ELLE

  • Support Team
  • 4606
  • 869
один в один ошибка с плагином remember
3.1.1 -> 3.2.1 обновлением из админки
*

Arkadiy

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

Arkadiy

  • Группа развития
  • 5351
  • 440
  • Крепитесь, други.
Начал расследование. По факту у меня оказалось два файла с классом 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

  • Support Team
  • 7470
  • 743
  • Разраблю понемногу
*

Arkadiy

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

HiopsNerevar

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

Arkadiy

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

HiopsNerevar

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

Arkadiy

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

HiopsNerevar

  • Завсегдатай
  • 656
  • 88
  • Я удобный.
Это бидаль пича.
*

Arkadiy

  • Группа развития
  • 5351
  • 440
  • Крепитесь, други.
*

HiopsNerevar

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

Arkadiy

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

mr_green

  • Захожу иногда
  • 11
  • 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

  • Support Team
  • 7470
  • 743
  • Разраблю понемногу
*

mr_green

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

Coresolo

  • Осваиваюсь на форуме
  • 43
  • 1
  • 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

  • Осваиваюсь на форуме
  • 81
  • 0
 *DRINK* АЙ ДА МОЛОДЦА!
*

zegamind

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

Arkadiy

  • Группа развития
  • 5351
  • 440
  • Крепитесь, други.
*

driada712

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

stylus83

  • Осваиваюсь на форуме
  • 192
  • 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

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

stylus83

  • Осваиваюсь на форуме
  • 192
  • 0
Значит у вас более новая версия чем здесь обсуждается.
было написано обновить до 3.1.5. Так что ж можно сделать?
*

stylus83

  • Осваиваюсь на форуме
  • 192
  • 0
при том что админка работает, только в панели управления выдает ошибку
Table 'arbolsem_admin.eqrxm_postinstall_messages' doesn't exist SQL=SHOW FULL COLUMNS FROM `eqrxm_postinstall_messages`
*

Arkadiy

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

Phobosm10

  • Новичок
  • 1
  • 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 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

При обновлении выдает: Could not resolve

Автор savir_first

Ответов: 1
Просмотров: 57
Последний ответ 14.09.2017, 20:48:20
от voland
Ошибка при обновлении с 3.7.4 до 3.7.5

Автор Lolpino

Ответов: 1
Просмотров: 64
Последний ответ 14.09.2017, 15:14:58
от effrit
Проблемы с установкой Joomla 3.7.4

Автор mr.relax

Ответов: 5
Просмотров: 533
Последний ответ 07.08.2017, 08:21:06
от ProtectYourSite
Слетели стили и шаблон главной страницы админки после обновления с 2, 5 до 3.5.1 а потом до 3.7.3

Автор mupohob

Ответов: 3
Просмотров: 242
Последний ответ 17.07.2017, 10:41:29
от vipiusss
НЕт сообщения об обновлении

Автор Ebelous

Ответов: 0
Просмотров: 97
Последний ответ 23.06.2017, 23:23:52
от Ebelous