XF 2.1 Ошибка при выполнении обработки истёкших платных повышений прав пользователей в задании планировщика

Статус
В этой теме нельзя размещать новые ответы.
Версия XenForo
v2.1.12

Logarifm

Проверенные
Сообщения
81
Реакции
8
Баллы
5,510
Доброго времени суток, форумчане.
Внезапно перестали сниматься платные повышения прав, выяснилось что при попытке выполнения крона обработки истёкших платных повышений прав пользователей - возникает ошибка.

Сама ошибка:
Код:
TypeError: Argument 3 passed to XF\Service\User\Downgrade::__construct() must be an instance of XF\Entity\User, null given, called in /home/admin/web/site.net/public_html/src/XF/Container.php on line 270 in src/XF/Service/User/Downgrade.php at line 29

XF\Service\User\Downgrade->__construct() in src/XF/Container.php at line 270
XF\Container->createObject() in src/XF/App.php at line 1577
XF\App->XF\{closure}() in src/XF/Container.php at line 228
XF\Container->create() in src/XF/App.php at line 2783
XF\App->service() in src/XF/Repository/UserUpgrade.php at line 140
XF\Repository\UserUpgrade->downgradeExpiredUpgrades() in src/XF/Cron/CleanUp.php at line 183
XF\Cron\CleanUp::runUserDowngrade()
call_user_func() in src/XF/Admin/Controller/CronEntry.php at line 112
XF\Admin\Controller\CronEntry->actionRun() in src/XF/Mvc/Dispatcher.php at line 350
XF\Mvc\Dispatcher->dispatchClass() in src/XF/Mvc/Dispatcher.php at line 257
XF\Mvc\Dispatcher->dispatchFromMatch() in src/XF/Mvc/Dispatcher.php at line 113
XF\Mvc\Dispatcher->dispatchLoop() in src/XF/Mvc/Dispatcher.php at line 55
XF\Mvc\Dispatcher->run() in src/XF/App.php at line 2191
XF\App->run() in src/XF.php at line 391
XF::runApp() in admin.php at line 13

Из журнала ошибок сервера:
Код:
TypeError: Argument 3 passed to XF\Service\User\Downgrade::__construct() must be an instance of XF\Entity\User, null given, called in /home/admin/web/site.net/public_html/src/XF/Container.php on line 270 src/XF/Service/User/Downgrade.php:29
Сгенерирована пользователем: admin 12 Апр 2022 в 22:03

Трассировка стека
#0 src/XF/Container.php(270): XF\Service\User\Downgrade->__construct(Object(XF\Admin\App), Object(SV\UserUpgradePermissions\XF\Entity\UserUpgrade), NULL, Object(DBTech\UserUpgradeCoupon\XF\Entity\UserUpgradeActive))
#1 src/XF/App.php(1577): XF\Container->createObject('XF\\Service\\User...', Array)
#2 src/XF/Container.php(228): XF\App->XF\{closure}('XF\\Service\\User...', Array, Object(XF\Container))
#3 src/XF/App.php(2783): XF\Container->create('service', 'XF:User\\Downgra...', Array)
#4 src/XF/Repository/UserUpgrade.php(140): XF\App->service('XF:User\\Downgra...', Object(SV\UserUpgradePermissions\XF\Entity\UserUpgrade), NULL, Object(DBTech\UserUpgradeCoupon\XF\Entity\UserUpgradeActive))
#5 src/XF/Cron/CleanUp.php(183): XF\Repository\UserUpgrade->downgradeExpiredUpgrades()
#6 [internal function]: XF\Cron\CleanUp::runUserDowngrade(Array)
#7 src/XF/Admin/Controller/CronEntry.php(112): call_user_func(Array, Array)
#8 src/XF/Mvc/Dispatcher.php(350): XF\Admin\Controller\CronEntry->actionRun(Object(XF\Mvc\ParameterBag))
#9 src/XF/Mvc/Dispatcher.php(257): XF\Mvc\Dispatcher->dispatchClass('XF:CronEntry', 'Run', Object(XF\Mvc\RouteMatch), Object(XF\Admin\Controller\CronEntry), NULL)
#10 src/XF/Mvc/Dispatcher.php(113): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(XF\Admin\Controller\CronEntry), NULL)
#11 src/XF/Mvc/Dispatcher.php(55): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#12 src/XF/App.php(2191): XF\Mvc\Dispatcher->run()
#13 src/XF.php(391): XF\App->run()
#14 admin.php(13): XF::runApp('XF\\Admin\\App')
#15 {main}

Содержимое запроса
array(4) {
  ["url"] => string(36) "/admin.php?cron/downgradeExpired/run"
  ["referrer"] => string(38) "https://site.net/admin.php?cron/"
  ["_GET"] => array(1) {
    ["cron/downgradeExpired/run"] => string(0) ""
  }
  ["_POST"] => array(1) {
    ["_xfToken"] => string(8) "********"
  }
}

Прошу помочь по возможности.
 
Возможно ошибка вылезает где-то тут, попробуйте отключить плагин
SV\UserUpgradePermissions
А если нету такого плагина?
Аналогичная проблема. Следственно не снимает людям платные повышения прав.
 
Проблема возникала, потому что пользователи у которых было активно повышение прав, самостоятельно удалились при помощи плагина удаления своей учетной записи.

Решение - зайти в пхпмайадмин и удалить в таблице xf_user_upgrade_active этих пользователей.

1 Запрос для поиска этих пользователей (делать в общей бд)

SQL:
SELECT a.*, b.user_id FROM `xf_user_upgrade_active` AS a
LEFT JOIN xf_user AS b ON a.user_id = b.user_id
HAVING b.user_id IS NULL

2. Потом в таблице xf_user_upgrade_active удалить этих пользователей в ручную.
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу