Ошибка в журнале - Невозможно удалить временный файл [Решено]

Главные вкладки

Аватар пользователя raufkul raufkul 7 ноября 2017 в 17:28

Всем привет! Прошу помощи. Использую друпал 8.3.7. В отчетах недавно начала появляться следующая ошибка.

file system 11/07/2017 - 14:03 Невозможно удалить временный файл "temporary://favicon… Аноним (не проверено)
file system 11/07/2017 - 14:03 Невозможно удалить временный файл "temporary://logo5… Аноним (не проверено)
file system 11/07/2017 - 14:03 Невозможно удалить временный файл "temporary://logo4… Аноним (не проверено)
file system 11/07/2017 - 14:03 Невозможно удалить временный файл "temporary://logo3… Аноним (не проверено)
file system 11/07/2017 - 14:03 Невозможно удалить временный файл "temporary://logo2… Аноним (не проверено)
file system 11/07/2017 - 14:03 Невозможно удалить временный файл "temporary://logo1…

Как мне можно убрать эту ошибку. В админке путь к временной папке такой - /tmp. Может в базе данных что-то надо подправить?

Лучший ответ

Аватар пользователя mbaev mbaev 10 ноября 2017 в 11:33
2

Ну что ж, это светятся "остатки" временных файлов.

Друпал работает таким образом, что при валидации формы он кладёт загруженный файл во временную папку, а когда валидация прошла успешно, то далее идёт процедура сабмита формы. В этот момент файл перемещается из временной папки в постоянную (sites/default/files) и получает статус FILE_STATUS_PERMANENT. В это же время, Друпал бережливо удаляет как файл из временной папки, так и запись в базе о нем. Раз файл не может быть удалён, то и запись остаётся, чтобы попытаться "подчистить" всё в следующий раз.

Обычно, за папками для временных файлов следят хостинги и вы можете не переживать об этом. Остаётся удалить записи о временных файлах, чтобы не расстраивать глаз ошибками в логах. Сделать это можно SQL-запросом по базе:

DELETE FROM file_managed WHERE uri LIKE 'temporary://%';

Надеюсь, не слишком запутанно.

Комментарии

Аватар пользователя raufkul raufkul 7 ноября 2017 в 17:40

Я выставляю права через файловый менеджер у себя на хостинге. Но я не вижу у себя этой папки - tmp. Где она находиться?

Аватар пользователя mbaev mbaev 7 ноября 2017 в 17:59
1

@raufkul, прошу коротко (да, нет, не знаю):

  1. Какой хостинг вы используете?
  2. Настроен ли у вас серверный cron?
  3. Что написано у вас в поле Временный каталог, по адресу admin/config/media/file-system?
Аватар пользователя raufkul raufkul 8 ноября 2017 в 9:23

Mbaev спасибо за то, что откликнулись. Отвечаю

1. Я использую shared хостинг - timeweb
2. Серверный крон у меня не настроен - только на сайте
3. Прописан путь к временной папке - /tmp

Аватар пользователя mbaev mbaev 8 ноября 2017 в 10:16
2

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

Аватар пользователя raufkul raufkul 8 ноября 2017 в 12:26

Очистил путь, сохранил форму - временная папка определилась - путь осталася таким же - /tmp. Запустил крон - ошибки на месте.

Аватар пользователя mbaev mbaev 8 ноября 2017 в 12:33
1

Ок, в таком случае, вам нужно написать в тех поддержку хостинга. Есть предположение, что вы не имеете прав на удаление файлов из временной папки, что странно.

Аватар пользователя raufkul raufkul 8 ноября 2017 в 16:57

Максим, я написал техподдержке и они мне ответили:

"Действительно, прав на удаление файлов из папки /tmp у вас нет. Вы можете создавать и удалять временные файлы в папке /tmp/3866 ".

Подскажите пожалуйста, что мне делать дальше.

Аватар пользователя raufkul raufkul 8 ноября 2017 в 17:29

Наверное это старая папка:

file system 11/08/2017 - 16:24 Невозможно удалить временный файл "temporary://favicon…
file system 11/08/2017 - 16:24 Невозможно удалить временный файл "temporary://logo5…
file system 11/08/2017 - 16:24 Невозможно удалить временный файл "temporary://logo4…
file system 11/08/2017 - 16:24 Невозможно удалить временный файл "temporary://logo3...
file system 11/08/2017 - 16:24 Невозможно удалить временный файл "temporary://logo2…
file system 11/08/2017 - 16:24 Неможливо видалити тимчасовий файл "temporary://logo1…

Аватар пользователя mbaev mbaev 10 ноября 2017 в 11:33
2

Ну что ж, это светятся "остатки" временных файлов.

Друпал работает таким образом, что при валидации формы он кладёт загруженный файл во временную папку, а когда валидация прошла успешно, то далее идёт процедура сабмита формы. В этот момент файл перемещается из временной папки в постоянную (sites/default/files) и получает статус FILE_STATUS_PERMANENT. В это же время, Друпал бережливо удаляет как файл из временной папки, так и запись в базе о нем. Раз файл не может быть удалён, то и запись остаётся, чтобы попытаться "подчистить" всё в следующий раз.

Обычно, за папками для временных файлов следят хостинги и вы можете не переживать об этом. Остаётся удалить записи о временных файлах, чтобы не расстраивать глаз ошибками в логах. Сделать это можно SQL-запросом по базе:

DELETE FROM file_managed WHERE uri LIKE 'temporary://%';

Надеюсь, не слишком запутанно.

Аватар пользователя mbaev mbaev 8 ноября 2017 в 18:08

Предварительно, конечно же, убедившись, что не удалите ничего нужного:

SELECT * FROM file_managed WHERE uri LIKE 'temporary://%';
Аватар пользователя raufkul raufkul 10 ноября 2017 в 10:30

Максим, здравствуйте.

Я удачно удалил старые записи временных файлов. Большое спасибо!

У меня еще есть два вопроса по этому поводу, чтобы до конца все понимать. Буду рад вашим ответам.

1. Хостеры мне сказали, что эта папка временных файлов, которую они мне предоставили - /tmp/3866 - общая для всего аккаунта. Получается? что в настройках на всех сайтах мне надо указывать только эту папку?

2. Если у меня не было доступа к временному файлу /tmp, то получается что друпал работал без него. Такое тоже возможно? Я некоторое время, где-то с месяц, закачивал и удалял картинки. Правильно ли все легло? Могут ли быть от этого какие-то последствия? Если да, то как это можно проверить?

Аватар пользователя mbaev mbaev 10 ноября 2017 в 10:34
2

@raufkul это хорошо!

  1. Да
  2. Не совсем. У Вас был и есть доступ до этой папки. Вы можете и могли записывать туда файлы, но не можете удалять.
    Таким образом все файлы закачанные в Друпал были перенесены куда надо, просто они остались в этой папке /tmp. Это не страшно.