Новости 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 можно из объекта приложения

<?php protected function doExecute(InputInterface $input, OutputInterface $output): int { //... $live_site = $this->getApplication()->get('live_site'); //... }

и исходя из этого строить дальнейшую логику.

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

NIKOLY

  • Захожу иногда
  • 92
  • 1 / 0
Здравствуйте, уважаемые форумчане! Возможно встречалась такая проблема. Не создаются Дочерние товара. Точнее сначала они создаются, а потом на каком-то товаре выдаёт "Ошибка: Дочерний товар не создан". Хоте все товары создавались одинаково путём копирования предыдущего. Сначала создавались товары, потом к ним создавались Дочерние. И вот что интересно, допустим первым 17 дочерние товары создаются, потом штук 15-20 для кого нет, а потом опять создаются. С чем это может быть связано? Ошибка ни какого кода, чтобы сориентироваться в чём причина, не выводит. Спасибо!
*

sivers

  • Живу я здесь
  • 2585
  • 359 / 0
Re: Не создаются дочерние товары
« Ответ #1 : 17.06.2025, 12:49:36 »
Смотрите логи ошибок на сервере. Если Joomla 5, то включите в настройках "логировать все" - тогда логи ошибок будут складываться в /administrator/logs/everything.php - что значительно удобней, чем искать где-то на хостинге. Правда, критические ошибки (типа 500-х) в этот лог не попадут, но в вашем случае все должно сработать.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

NIKOLY

  • Захожу иногда
  • 92
  • 1 / 0
Re: Не создаются дочерние товары
« Ответ #2 : 17.06.2025, 13:06:09 »
Смотрите логи ошибок на сервере. Если Joomla 5, то включите в настройках "логировать все" - тогда логи ошибок будут складываться в /administrator/logs/everything.php - что значительно удобней, чем искать где-то на хостинге. Правда, критические ошибки (типа 500-х) в этот лог не попадут, но в вашем случае все должно сработать.

Спасибо, посмотрю! У меня Joomla! 3.9.22 и VirtueMart 3.8.2
*

sivers

  • Живу я здесь
  • 2585
  • 359 / 0
Re: Не создаются дочерние товары
« Ответ #3 : 17.06.2025, 13:28:42 »
В 3-ке такой настройки нет. Только логи хостинга смотреть.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

NIKOLY

  • Захожу иногда
  • 92
  • 1 / 0
Re: Не создаются дочерние товары
« Ответ #4 : 17.06.2025, 15:35:09 »
В 3-ке такой настройки нет. Только логи хостинга смотреть.
Ясно. А если на локалке? Опенсервер
*

sivers

  • Живу я здесь
  • 2585
  • 359 / 0
Re: Не создаются дочерние товары
« Ответ #5 : 17.06.2025, 16:19:48 »
Ясно. А если на локалке? Опенсервер
Так и у него логи есть. На локальном вам даже легче найти будет. Поищите по запросу типа "где лежат логи опенсервер".
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

NIKOLY

  • Захожу иногда
  • 92
  • 1 / 0
Re: Не создаются дочерние товары
« Ответ #6 : 17.06.2025, 16:49:10 »
При каждой попытки создание в логах появляется это:


pamyatnik: 127.0.0.1 [17/Jun/2025:16:43:15 +0300] "POST /administrator/index.php?option=com_virtuemart&view=product HTTP/1.1" 303 - "http://pamyatnik/administrator/index.php?option=com_virtuemart&view=product" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 YaBrowser/24.10.0.0 Safari/537.36"
pamyatnik: 127.0.0.1 [17/Jun/2025:16:43:15 +0300] "GET /administrator/index.php?option=com_virtuemart&view=product HTTP/1.1" 200 160955 "http://pamyatnik/administrator/index.php?option=com_virtuemart&view=product" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 YaBrowser/24.10.0.0 Safari/537.36"
pamyatnik: 127.0.0.1 [17/Jun/2025:16:43:16 +0300] "GET /administrator/index.php?option=com_virtuemart&view=product&type=getCategoriesTree&virtuemart_category_id=2&format=json&lang= HTTP/1.1" 200 4492 "http://pamyatnik/administrator/index.php?option=com_virtuemart&view=product" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 YaBrowser/24.10.0.0 Safari/537.36"
*

NIKOLY

  • Захожу иногда
  • 92
  • 1 / 0
Re: Не создаются дочерние товары
« Ответ #7 : 17.06.2025, 16:52:14 »
И вот такая запись, на 2 строки больше, когда я пытаюсь создать Дочерний товар, который идёт после того, у которого дочерний товар создался


pamyatnik: 127.0.0.1 [17/Jun/2025:16:45:33 +0300] "POST /administrator/index.php?option=com_virtuemart&view=product HTTP/1.1" 200 137287 "http://pamyatnik/administrator/index.php?option=com_virtuemart&view=product" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 YaBrowser/24.10.0.0 Safari/537.36"
pamyatnik: 127.0.0.1 [17/Jun/2025:16:45:33 +0300] "GET /administrator/index.php?option=com_virtuemart&view=product&type=getCategoriesTree&virtuemart_category_id=2&format=json&lang= HTTP/1.1" 200 4492 "http://pamyatnik/administrator/index.php?option=com_virtuemart&view=product" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 YaBrowser/24.10.0.0 Safari/537.36"
pamyatnik: 127.0.0.1 [17/Jun/2025:16:45:40 +0300] "POST /administrator/index.php?option=com_virtuemart&view=product HTTP/1.1" 303 - "http://pamyatnik/administrator/index.php?option=com_virtuemart&view=product" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 YaBrowser/24.10.0.0 Safari/537.36"
pamyatnik: 127.0.0.1 [17/Jun/2025:16:45:40 +0300] "GET /administrator/index.php?option=com_virtuemart&view=product HTTP/1.1" 200 137567 "http://pamyatnik/administrator/index.php?option=com_virtuemart&view=product" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 YaBrowser/24.10.0.0 Safari/537.36"
pamyatnik: 127.0.0.1 [17/Jun/2025:16:45:41 +0300] "GET /administrator/index.php?option=com_virtuemart&view=product&type=getCategoriesTree&virtuemart_category_id=2&format=json&lang= HTTP/1.1" 200 4492 "http://pamyatnik/administrator/index.php?option=com_virtuemart&view=product" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 YaBrowser/24.10.0.0 Safari/537.36"
*

NIKOLY

  • Захожу иногда
  • 92
  • 1 / 0
Re: Не создаются дочерние товары
« Ответ #8 : 17.06.2025, 18:07:30 »
Так и у него логи есть. На локальном вам даже легче найти будет.
По этим логам что я нашёл можно сориентироваться в чём проблема?
*

sivers

  • Живу я здесь
  • 2585
  • 359 / 0
Re: Не создаются дочерние товары
« Ответ #9 : 17.06.2025, 21:58:52 »
Нет. Это логи запросов. А вам нужен лог ошибок. Обычно в имени файла присутствует слово error
например:
имя_сайта.error.log
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

NIKOLY

  • Захожу иногда
  • 92
  • 1 / 0
Re: Не создаются дочерние товары
« Ответ #10 : 18.06.2025, 13:40:37 »
Нет. Это логи запросов. А вам нужен лог ошибок. Обычно в имени файла присутствует слово error
например:
имя_сайта.error.log

Есть такое. Это?

[17-Jun-2025 18:29:18 Europe/Moscow] PHP Warning:  sprintf(): Too few arguments in C:\OSPanel\domains\pamyatnik\administrator\components\com_virtuemart\helpers\vmtext.php on line 154

Вот часть кода


         if (is_array($args[$count - 1]))
         {
            $args[0] = self::$language->_(
               $string, array_key_exists('jsSafe', $args[$count - 1])? $args[$count - 1]['jsSafe'] : false,
               array_key_exists('interpretBackSlashes', $args[$count - 1])? $args[$count - 1]['interpretBackSlashes'] : true
            );

            if (array_key_exists('script', $args[$count - 1]) && $args[$count - 1]['script'])
            {
               self::$strings[$string] = call_user_func_array('sprintf', $args);
               return $string;
            }
         }
         else
         {
            foreach($args as &$arg){
               //vmdebug('my sprintf $arg',$arg);
               $arg = self::$language->_($arg);
               $arg = preg_replace('/\[\[%([0-9]+):[^\]]*\]\]/', '%\1$s', $arg);
            }

         }
         //$args[0] = preg_replace('/\[\[%([0-9]+):[^\]]*\]\]/', '%\1$s', $args[0]);
         return call_user_func_array('sprintf', $args);
      }
      return '';

именно 154 строка: return call_user_func_array('sprintf', $args);
*

sivers

  • Живу я здесь
  • 2585
  • 359 / 0
Re: Не создаются дочерние товары
« Ответ #11 : 18.06.2025, 14:57:21 »
именно 154 строка: return call_user_func_array('sprintf', $args);
Вполне возможно. Попробуйте заменить эту строку вот на это:
Код
         $result = '';
         try {
             $result = call_user_func_array('sprintf', $args);
         }catch(\Exception $e){
             // exit($e->getMesage());
         }
         return $result;
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отображаются товары в категории

Автор iZacNT

Ответов: 0
Просмотров: 1870
Последний ответ 23.06.2023, 12:20:49
от iZacNT
VirtueMart 3 Отображать только товары в наличии!

Автор GaziroFFka

Ответов: 4
Просмотров: 3439
Последний ответ 06.06.2023, 13:55:13
от Akeksandr
Составные товары

Автор eclipseggg

Ответов: 3
Просмотров: 725
Последний ответ 29.03.2021, 16:48:34
от draff
Поле вариант и дочерние товары

Автор snikolai

Ответов: 5
Просмотров: 884
Последний ответ 19.08.2020, 14:08:38
от sivers
Не добавляются товары в корзину с Iphone

Автор Diazz

Ответов: 0
Просмотров: 1111
Последний ответ 16.12.2019, 22:13:06
от Diazz