Окончательно удалить неиспользуемые / потерянные файлы в Drupal 8 - PullRequest
0 голосов
/ 03 мая 2018

У нас были серьезные ошибки в PDF-файле, загруженном на один из наших веб-сайтов. Но после «удаления» из Drupal, он все еще доступен по прямым ссылкам. Drupal, похоже, не удаляет его самостоятельно.

Я все еще могу найти его в таблице file_managed, но не в file_usage. Безопасно ли удалять строку базы данных и файл вручную?

Уже проверил все старые вопросы здесь на SO, но ни один из них не работает.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Я знаю, что это старый пост, но у меня была та же проблема, и я не нашел хорошего ответа.

Итак, после небольшой пробной ошибки я пришел к следующему:

<?php

// Some nice ideas from:
// https://stackoverflow.com/questions/52455491/how-to-set-file-usage-on-drupal-8

$file_storage = \Drupal::entityTypeManager()->getStorage('file');
$fids = Drupal::entityQuery('file')->condition('status', 1)->execute();
$file_usage = Drupal::service('file.usage');

foreach ($fids as $fid) {

  $file = Drupal\file\Entity\File::load($fid);
  $usage = $file_usage->listUsage($file);

  if(count($usage) == 0) {

    $file->delete();

  }

}

Будьте осторожны, код полагается на то, что Drupal сообщает правильное количество узлов, где используется файл, и это может не помочь.

Надеюсь, это может быть полезно, если не для sbo , для кого-то еще.

0 голосов
/ 13 мая 2018

Возможно, вы захотите попробовать Fancy File Delete , который имеет среди других функций следующие опции

Удаление неиспользуемых файлов из каталога файлов по умолчанию, которых нет в таблице управляемых файлов. АКА удаляет все неуправляемые файлы.

Удаление неиспользуемых файлов из всей установки, которые больше не привязаны к узлам и таблице использования файлов. АКА удаляет все потерянные файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...