Вопрос или проблема
Содержимое моей папки загрузок периодически удаляется. Каждые несколько дней, точно не знаю, когда именно. Как я могу отлаживать, что это вызывает?
Моя настройка сложная:
- около 10 плагинов, некоторые из них кастомные. Ни один из моих кастомных плагинов не использует wpcron и не выполняет I/O. Возможно, какой-то другой плагин делает это
- сайт многосайтовый
- Я использую API wp-json для запуска некоторых скриптов, включая создание постов и загрузку изображений
- файлы в папке загрузок — это случайные файлы, не прикрепленные к каким-либо постам и не являющиеся частью базы данных “медиа”
- wp работает внутри docker на самостоятельно управляемом сервере
Я пытался посмотреть на логи apache, но там столько всего, и я не знаю точное время, когда это происходит.
Как я могу начать выяснять, в чем проблема? У меня нет понятия, когда это происходит и что удаляет файлы. Мне нужно с чего-то начать, но я не знаю, с чего.
Вы когда-нибудь узнали, что это вызывает? Я страдаю от той же проблемы. Кажется, что удаляются только недавно добавленные загрузки каждые 8 дней, и я никак не могу понять, что это делает. Я только что заново загрузил точно такие же изображения, переименовал их папки в даты, к которым они относились, и как root установил очень строгие разрешения, только доступ на чтение от веб-сервера. Посмотрю, как это получится, но, честно говоря, я думал, что уже делал это раньше, и WP, похоже, удаляет их от имени пользователя root.
Ответ или решение
Как выяснить причину регулярного удаления файлов из папки загрузок WordPress
Проблема удаления содержимого папки загрузок WordPress может быть весьма сложной и требует системного подхода к диагностике. Опираясь на предоставленные вами данные, давайте рассмотрим шаги, которые помогут вам определить источник этой проблемы.
1. Анализ окружения
Прежде всего, необходимо понять конфигурацию вашего окружения:
- Многосайтовая установка WordPress: Убедитесь, что плагины, активно работающие на всех сайтах, корректно функционируют и не конфликтуют друг с другом.
- Плагины и их поведение: Некоторые из установленных плагинов могут самостоятельно инициировать удаление файлов. Проверьте, какие плагины используют функции удаления и имели ли они обновления, которые могли повлиять на их работу.
- API запросы: Использование API для загрузки изображений может влиять на состояние файловой системы. Просмотрите скрипты, использующие
wp-json API
, чтобы определить, не происходит ли удаление файлов во время выполнения запроса.
2. Использование логов
Логи сервера играют ключевую роль в диагностике проблемы. Вот несколько рекомендаций:
- Логи Apache: Чтобы выявить, что происходит в определённый момент времени, настройте уровни логирования на более детализированные значения (например, включите
LogLevel debug
). Это позволит вам получать больше информации о запросах, производимых к вашему серверу. - Логи файла: Включите логи для ваших плагинов, если такая функция имеется. Иногда плагины могут вести собственные логи, что позволит вам отследить их поведение в нужный момент.
- Файлы журналирования системы: Если у вас есть доступ к системным логам (например,
/var/log/syslog
), проверьте их на наличие системных событий, которые могли бы указывать на механизм, удаляющий файлы.
3. Ограничение прав доступа
Вы уже приняли некоторые меры по настройке прав доступа на загрузки. Это хороший шаг. Рекомендуется придерживаться следующих принципов:
- Права доступа: Убедитесь, что права доступа к папке uploads установлены таким образом, чтобы веб-сервер имел доступ только к чтению. Однако, помните, что это может повлиять на функциональность загрузки медиафайлов.
- Пользовательские группы: Проверьте, какой пользователь используется веб-сервером (например, www-data для Apache). Убедитесь, что он не имеет лишнего доступа к папке загрузок.
4. Мониторинг изменений в файловой системе
Для понимания, когда именно и кто удаляет файлы, можно использовать утилиты мониторинга:
- inotify: Вы можете установить inotify-tools, чтобы отслеживать изменения в папке. Это позволит вам увидеть, кто именно выполняет действия по удалению. Используйте команду:
inotifywat ch -m /path/to/uploads -e delete
- Auditd: Для более сложного мониторинга можно использовать auditd, который позволяет отслеживать действия на уровне ядра.
5. Проверка на вредоносные скрипты
Поскольку у вас есть пользовательские плагины, нужно быть особенно осторожными. Используйте плагины для безопасности, такие как Sucuri или Wordfence, которые могут вести мониторинг изменений и проверять наличие вредоносного кода.
Заключение
Регулярное удаление содержимого папки загрузок может быть вызвано различными факторами, включая плагины, API запросы, права доступа или даже вредоносные скрипты. Проводя систематическую диагностику шаг за шагом, вы сможете выявить источник проблемы. Если у вас остаются сложности, возможно, стоит обратиться за помощью к профессиональным специалистам в области поддержки WordPress или безопасности веб-сайтов.
Следует помнить, что правильная диагностика может существенно снизить вероятность возникновения проблем в будущем, и, возможно, предотвратит потерю важных данных.