Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

TypeError: Argument 1 passed to

Опубликовано:

При попытке отредактировать группу в списке групп в админцетре, кликаю карандаш, получаю ошибку для любой из групп. В чем проблема и как починить? 4.2.7. PHP 7.

 

TypeError: Argument 1 passed to IPS\downloads\extensions\core\ContentRouter\_Downloads::__construct() must be an instance of IPS\Member, instance of IPS\Member\Group given, called in /серверный путь/system/Application/Application.php on line 819 (0)
#0 /серверный путь/system/Application/Application.php(819): IPS\downloads\extensions\core\ContentRouter\_Downloads->__construct(Object(IPS\Member\Group))
#1 /серверный путь/system/Application/Application.php(300): IPS\_Application->extensions('core', 'ContentRouter', true, Object(IPS\Member\Group))
#2 /серверный путь/applications/core/extensions/core/GroupForm/Content.php(35): IPS\_Application::allExtensions('core', 'ContentRouter', Object(IPS\Member\Group))
#3 /серверный путь/applications/core/modules/admin/members/groups.php(188): IPS\core\extensions\core\GroupForm\_Content->process(Object(IPS\Helpers\Form), Object(IPS\Member\Group))
#4 /серверный путь/system/Dispatcher/Controller.php(85): IPS\core\modules\admin\members\_groups->form()
#5 /серверный путь/applications/core/modules/admin/members/groups.php(34): IPS\Dispatcher\_Controller->execute()
#6 /серверный путь/system/Dispatcher/Dispatcher.php(146): IPS\core\modules\admin\members\_groups->execute()
#7 /серверный путь/admin/index.php(13): IPS\_Dispatcher->run()
#8 {main}

 

При попытке создания новой группы:

 

TypeError: Argument 1 passed to IPS\downloads\extensions\core\ContentRouter\_Downloads::__construct() must be an instance of IPS\Member, instance of IPS\Member\Group given, called in /серверный путь/system/Application/Application.php on line 819 (0)
#0 /серверный путь/system/Application/Application.php(819): IPS\downloads\extensions\core\ContentRouter\_Downloads->__construct(Object(IPS\Member\Group))
#1 /серверный путь/system/Application/Application.php(300): IPS\_Application->extensions('core', 'ContentRouter', true, Object(IPS\Member\Group))
#2 /серверный путь/applications/core/extensions/core/GroupForm/Content.php(35): IPS\_Application::allExtensions('core', 'ContentRouter', Object(IPS\Member\Group))
#3 /серверный путь/applications/core/modules/admin/members/groups.php(188): IPS\core\extensions\core\GroupForm\_Content->process(Object(IPS\Helpers\Form), Object(IPS\Member\Group))
#4 /серверный путь/system/Dispatcher/Controller.php(85): IPS\core\modules\admin\members\_groups->form()
#5 /серверный путь/applications/core/modules/admin/members/groups.php(34): IPS\Dispatcher\_Controller->execute()
#6 /серверный путь/system/Dispatcher/Dispatcher.php(146): IPS\core\modules\admin\members\_groups->execute()
#7 /серверный путь/admin/index.php(13): IPS\_Dispatcher->run()
#8 {main}

Изменено пользователем Zero108

Рекомендованные сообщения

Опубликовано:
  • Автор
Точно можно сказать только после дебага на вашем сервере. Но вообще, в 4.2.6 есть ошибка в /system/Member/Member.php, проявляющаяся с версией интерпретатора php 7.0. и выше.
Первый вариант не решает проблему (ошибка остается).

Второй вариант приводит к An error occurred (500 Error) (php 7.0.27)

Изменено пользователем Zero108

Опубликовано:

Вообще, попробуйте отключить Downloads и редактировать или создавать группу. Что-то там с расширением ContentRouter не ладно. дебажить это мне не на чем сейчас просто.

Опубликовано:
  • Автор

Да, так работает. :D Спасибо. А ведь кто-то за этот продукт еще и платит... :blink:

Опубликовано:

Покажите содержимое файла

\applications\downloads\extensions\core\ContentRouter\Downloads.php

 

Может быть есть еще \applications\downloads\extensions\core\ContentRouter\downloads.php

Опубликовано:
  • Автор

Downloads - главная страница сайта.

 

Downloads.php - стандартный от 4.2.7.

 

<?php
/**
* @brief		Content Router extension: Downloads
* @author		<a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright	(c) Invision Power Services, Inc.
* @license		https://www.invisioncommunity.com/legal/standards/
* @package		Invision Community
* @subpackage	Downloads
* @since		26 Jun 2017
*/

namespace IPS\downloads\extensions\core\ContentRouter;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}

/**
* @brief	Content Router extension: Downloads
*/
class _Downloads
{
/**
 * @brief	Content Item Classes
 */
public $classes = array();

/**
 * Constructor
 *
 * @param	\IPS\Member|IPS\Member\Group|NULL	$memberOrGroup		If checking access, the member/group to check for, or NULL to not check access
 * @return	void
 */
public function __construct( $memberOrGroup = NULL )
{

}
}

Изменено пользователем Zero108

Опубликовано:
  • Автор

downloads.php - был такой файл. Я его удалил только что, так как в оригинальном дистрибутиве 4.2.7 такого файла нет, а тот, который был на сервере от декабря 2016 года. Теперь всё работает без необходимости выключения приложения Downloads. Еще оптимизировали работу мускула в my.cnf, но это может к теме не относится. Вообщем, проблема решена.

Изменено пользователем Zero108

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.