Новости Joomla

Загадочный параметр $live_site в configuration.php Joomla

Загадочный параметр $live_site в configuration.php Joomla

👩‍💻 Загадочный параметр $live_site в configuration.php Joomla. Зачем он нужен?Давным-давно, когда Joomla ещё была маленькой, в неё внедрили параметр $live_site. В ней хранился домен текущего сайта на случай, если Joomla не могла его определить из-за неверной настройки сервера. Нужно это было для разных SEO-компонентов, для использования редиректов и т.д.Со временем для работы собственно сайта этот параметр перестал быть нужным. Уже в начале 2010-х стали встречаться рекомендации оставлять этот параметр пустым, дабы оный не привёл к лишним проблемам и путанице. Тем более, в web-админке нет места, где его можно указать или посмотреть его значение. Только в configuration.php, а туда смотрят не часто.Однако, параметр всё же остался в ядре Joomla. Зачем он нужен? А нужен он в 2-х случаях:- для работы класса Joomla\CMS\Uri\Uri, который часто используется в коде Joomla для работы методов

Uri::root() и
Uri::base(), а значит может влиять и на работу в том числе ajax-скриптов.- для работы Joomla в CLI - командной строке сервера. В случае если вы используете в вашем CLI-плагине методы опять-таки класса Uri, то CLI ничего не знает о текущем домене, так как запускается вне web-сервера. Поэтому домен нужно указывать принудительно. Либо с помощью параметра командной строки
--live-site, например,
—live-site=https://site.ru/. Со слешем на конце, иначе в CLI адрес сайта станет
https://site.rujoomla.php.Либо в параметре
$live_site в файле configuration.php, так как
CliApplication берёт настройку оттуда, если параметр команды не указан или пуст.⚠️ Иначе в качестве хоста и url класса Uri будет установлено
https://joomla.invalid/set/by/console/application. В самом же коде команды получить параметр
$live_site можно из объекта приложения

protected function doExecute(InputInterface $input, OutputInterface $output): int    {         //...              $live_site = $this->getApplication()->get('live_site');         //...    }
и исходя из этого строить дальнейшую логику.@joomlafeed#joomla #разработка #php #cli

Вышел плагин AllVideos v.7.0 от JoomlaWorks

Вышел плагин AllVideos v.7.0 от JoomlaWorks

Вышел плагин AllVideos v.7.0 от JoomlaWorks.Этот контент-плагин - одно из старейших расширений для Joomla. Его задача - преобразовывать шорт-коды вида

{YOUTUBE}...{/YOUTUBE},
{MP3}parth/to/file.mp3{/MP3} и подобные во встроенные видео или аудио.👩‍💻 v.7.0.0. Что нового?- Добавлена поддержка Youtube Shorts. Просто скопируйте полный url видео и вставьте его внутри тегов
{YOUTUBE}...{/YOUTUBE}.- Поддержка Joomla 5.x без плагина обратной совместимости. PHP 5, PHP 7, PHP 8. - Индексация умным поиском в CLI. В Joomla 5 плагин перестал вызывать ошибку при индексации контента умным поиском через CLI,Заметьте, что этот один и тот же пакет для всех версий Joomla, начиная с 1.5.x и заканчивая 5.x. Технически "под капотом" код плагина по сути не менялся, а для поддержки следующих версий Joomla авторы вставляют "заплатки". Плагин всё ещё использует старую архитектуру файлов и классов Joomla, что, к сожалению, заставляет прибавлять к его описанию слова "пока ещё" - "пока ещё работает".
Страница расширенияGitHub расширенияJoomla Extensions Directory👩‍💻 За ссылку спасибо самому внимательному участнику нашего сообщества - Ринату Кажетову (@rkazhet).@joomlafeed#joomla #расширения

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

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 errorCall to a member function getQuery() on a non-object in /public_html/plugins/user/joomla/joomla.php on line 199

PHP Fatal errorCall 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

  • Глобальный модератор
  • 7284
  • 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

  • Глобальный модератор
  • 7284
  • 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

  • Глобальный модератор
  • 7284
  • 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 errorCall to a member function checkSession() on a non-object in /public_html/plugins/user/joomla/joomla.php on line 189
PHP Fatal errorCall to a member function getQuery() on a non-object in /public_html/plugins/user/joomla/joomla.php on line 199

PHP Fatal errorCall 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 errorCall to a member function checkSession() on a non-object in /public_html/plugins/user/joomla/joomla.php on line 189
PHP Fatal errorCall to a member function getQuery() on a non-object in /public_html/plugins/user/joomla/joomla.php on line 199

PHP Fatal errorCall 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 на лок.сервере osp. Можно платно

Автор Fati

Ответов: 0
Просмотров: 132
Последний ответ 16.06.2025, 16:40:04
от Fati
Прошу помощи. Ошибка при обновлении на Joomla 4

Автор wmsonic

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

Автор THeCMeX

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

Автор svd2014

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

Автор androv77

Ответов: 2
Просмотров: 1059
Последний ответ 09.11.2022, 11:40:34
от marksetter