Добавить в корзинуПозвонить
Найти в Дзене

Личный диск Bitrix24 не открывается и не загружаются файлы: восстановление Storage пользователя

На одном из порталов Bitrix24 возникла странная ситуация. У администратора перестал открываться личный диск: /company/personal/user/14254/disk/path/ Вместо интерфейса диска отображалась обычная лента активности. Дополнительно появилась ошибка при загрузке файлов через модуль Почта: Недостаточно прав доступа для загрузки файла на сервер При этом: Первое подозрение падает на модуль Disk. Проверяем наличие пользовательского Storage: $userId = 14254;$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId($userId);var_dump($storage); Результат: NULL Для сравнения проверяем рабочего пользователя: $userId = 5;$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId($userId);var_dump($storage); Результат: object(Bitrix\Disk\Storage) Каждый пользователь Bitrix24 имеет собственное хранилище файлов. Оно хранится в таблице: b_disk_storage Через него работают: Если Storage отсутствует, пользователь теряет возможность работать с файлами. Проверяем наличие записи: SELECT *FROM b_di
Оглавление

Личный диск Bitrix24 не открывается и не загружаются файлы: восстановление Storage пользователя

Симптомы

На одном из порталов Bitrix24 возникла странная ситуация.

У администратора перестал открываться личный диск:

/company/personal/user/14254/disk/path/

Вместо интерфейса диска отображалась обычная лента активности.

Дополнительно появилась ошибка при загрузке файлов через модуль Почта:

Недостаточно прав доступа для загрузки файла на сервер

При этом:

  • пользователь являлся администратором;
  • права доступа были корректны;
  • свободное место на сервере присутствовало;
  • другие сотрудники работали без проблем.

Первичная диагностика

Первое подозрение падает на модуль Disk.

Проверяем наличие пользовательского Storage:

$userId = 14254;$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId($userId);var_dump($storage);

Результат:

NULL

Для сравнения проверяем рабочего пользователя:

$userId = 5;$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId($userId);var_dump($storage);

Результат:

object(Bitrix\Disk\Storage)

Что означает NULL

Каждый пользователь Bitrix24 имеет собственное хранилище файлов.

Оно хранится в таблице:

b_disk_storage

Через него работают:

  • Личный диск;
  • Почта;
  • Чат;
  • Комментарии;
  • Задачи;
  • Прикрепление файлов.

Если Storage отсутствует, пользователь теряет возможность работать с файлами.

Проверка базы данных

Проверяем наличие записи:

SELECT *FROM b_disk_storageWHERE ENTITY_ID = 14254;

Результат:

0 rows

Запись отсутствовала.

Решение

Для восстановления хранилища используем штатный API Bitrix.

$userId = 14254;$user = \Bitrix\Main\UserTable::getById($userId)->fetch();$storage = \Bitrix\Disk\Driver::getInstance()->addUserStorage($userId);var_dump($storage);

После выполнения метода Bitrix автоматически:

  • создал Storage;
  • создал корневую папку;
  • зарегистрировал права доступа;
  • восстановил структуру пользовательского диска.

Результат

После создания Storage:

✅ открылся личный диск

✅ заработала загрузка файлов

✅ исчезла ошибка доступа

✅ восстановилась работа почтовых вложений

Как найти других пользователей без Storage

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

$rsUsers = \Bitrix\Main\UserTable::getList(['select' => ['ID', 'LOGIN']]);while ($user = $rsUsers->fetch()){$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId($user['ID']);if (!$storage){echo $user['ID'] . ' | ' . $user['LOGIN'] . PHP_EOL;}}

Почему это происходит

На практике такое встречается после:

  • восстановления резервной копии;
  • миграции портала;
  • ошибок обновления;
  • некорректного импорта пользователей;
  • ручного изменения таблиц базы данных.

Вывод

Если в Bitrix24 одновременно:

  • не открывается личный диск;
  • не прикрепляются файлы;
  • появляются ошибки доступа;

то первым делом проверьте наличие пользовательского Storage через:

\Bitrix\Disk\Driver::getInstance()->getStorageByUserId($userId);

Возвращаемый `NULL` почти всегда указывает на отсутствие персонального хранилища пользователя.

В большинстве случаев проблема решается штатным методом:

\Bitrix\Disk\Driver::getInstance()->addUserStorage($userId);

без вмешательства в базу данных и без переустановки модуля Disk.