Перейти к содержанию

Exception during scan .. is locked

Столкнулся с такой проблемой, в логах nextcloud стала всплывать ошибка

Error: opendir(/mnt/downloads/): Failed to open directory: Permission denied at /var/www/html/lib/private/Files/Storage/Local.php#153

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

docker exec -ti -u 33 nextcloud php -f /var/www/html/console.php files:scan --all

В ходе сканирования файлов пользователей, всплыла новая ошибка:

Exception while scanning: "files/0e3e13890e7b79a0edc572f53b262079" is locked #0 /volume1/web/nextcloud/lib/private/Files/Storage/Common.php(680)

Согласно базе знаний Nextcloud, для её решения, нужно:

  • Переведите Nextcloud в режим обслуживания: отредактируйте config/config.phpи измените эту строку:
    'maintenance' => true,
  • Пустая таблица oc_file_locks: используйте такие инструменты, как phpmyadmin, или подключитесь напрямую к своей базе данных и запустите (префикс таблицы по умолчанию — oc_, этот префикс может быть другим или даже пустым):
    DELETE FROM oc_file_locks WHERE 1
  • Отключите режим обслуживания (отменить первый шаг).
  • Убедитесь, что ваши cron-jobs работают правильно (страница администратора сообщает вам, когда cron запускался в последний раз): Docs Nextcloud
  • На вашем собственном сервере : используйте Redis для этой функции. Это быстрее, и до сих пор никаких проблем не было зарегистрировано. Вы можете следовать инструкциям по кэшированию памяти в документах
  • Общий хостинг (Те, кто не может установить Redis): вы можете отключить блокировку файлов, отредактировав файл конфигурации config/config.php:
    'filelocking.enabled' => false, однако отключение не является хорошим решением. Вы можете столкнуться с проблемами, когда несколько процессов пытаются записать в файл (особенно онлайн-редакторы в веб-интерфейсе). В однопользовательских и одноклиентских средах это, вероятно, не такая уж проблема.
  • У меня поднят redis для кеширования с веб-мордой redis-commander, поэтому идем в веб-интерфейс и делаем flushall.
  • После запускаем сканирование файлов. Проблема решена. Файлы доступны. Ошибок в логе нет.