Производительность

Картинки на WordPress не загружаются и не отображаются

МаксимИнженер по WordPress · 10+ лет с WordPress и WooCommerce9 мин чтения46 просмотров

Серые рамки вместо фото или «ошибка при загрузке» в Медиатеке — не всегда вирус. Права на uploads, SSL, лимиты PHP и плагины оптимизации — семь частых причин и порядок проверки.

В статье
  • Как понять: картинки «сломались» или не загружаются новые
  • Причина 1. Права на wp-content/uploads
  • Причина 2. Mixed content — HTTP-картинки на HTTPS-сайте
  • Причина 3. Ошибка загрузки в Медиатеке (лимиты PHP)

Нужна помощь — ускорение WordPress.

Картинки на WordPress не загружаются и не отображаются

На сайте вместо фото — серые рамки с иконкой «битое изображение», в админке загрузка в Медиатеку падает с ошибкой, а вчера всё работало. В практике это реже «вирус», чем права на папку uploads, mixed content после перехода на HTTPS, плагин WebP или защита от хотлинка. Ниже — семь причин и порядок проверки за 30–60 минут без переустановки WordPress.

Как понять: картинки «сломались» или не загружаются новые

Битые изображения на сайте WordPress
Серые рамки на витрине при нормальном тексте — файлы на сервере есть, но браузер их не получает.

Два разных симптома:

  • Старые картинки не отображаются — на фронте пустые блоки, в коде страницы URL ведёт на /wp-content/uploads/…, но файл отдаёт 404 или 403.
  • Новые не загружаются — в Медиатеке «ошибка при загрузке», в редакторе крутится и обрывается. Часто лимит PHP (upload_max_filesize, post_max_size) или права на папку.

Если «пропало всё» после обновления или миграции — сначала алгоритм по симптомам. Если только медиа — идите по чек-листу ниже.

Причина 1. Права на wp-content/uploads

Права доступа к папке uploads WordPress
Папки 755, файлы 644 — стандарт для shared-хостинга Beget и Timeweb.

После ручной распаковки архива, переноса по FTP или «лечения» вируса chmod часто сбивается. Веб-сервер не может читать JPG — на сайте битые картинки, загрузка новых падает.

Через FTP или файловый менеджер хостинга:

  • wp-content/uploads и все вложенные папки — 755
  • файлы внутри uploads — 644
  • владелец — пользователь веб-сервера (на shared обычно выставляет панель «Восстановить права»)

На VPS не ставьте 777 «чтобы заработало» — это дыра для загрузки шеллов. После смены прав обновите страницу с Ctrl+F5.

Причина 2. Mixed content — HTTP-картинки на HTTPS-сайте

Mixed content блокирует изображения WordPress
В консоли браузера blocked:mixed-content — старые URL в БД начинаются с http://.

Сайт открывается по https://, а в контенте и в БД ссылки на медиа остались http://. Браузер блокирует «небезопасный» контент — картинки не рисуются, в DevTools → Console видно Mixed Content.

Что сделать:

  1. В wp-config.php перед «That's all» добавьте define('FORCE_SSL_ADMIN', true); если ещё нет.
  2. Плагин Really Simple SSL или SSL Insecure Content Fixer — массовая замена URL в БД (с бэкапом).
  3. Вручную через phpMyAdmin: поиск-замена в wp_posts и wp_postmetahttp://ваш-доменhttps://ваш-домен. Только после бэкапа БД.

После переезда на SSL проверьте «Настройки → Общие»: адреса WordPress и сайта должны быть с https://.

Причина 3. Ошибка загрузки в Медиатеке (лимиты PHP)

Ошибка загрузки файла в медиатеку WordPress
Сообщение «превышен максимальный размер файла» — upload_max_filesize в php.ini, не WordPress.

Файл 8 МБ, а на хостинге upload_max_filesize = 2M — загрузка обрывается без понятного текста. Проверьте в панели Beget/Timeweb раздел PHP или установите плагин WP Server Info / посмотрите «Инструменты → Здоровье сайта → Информация».

Ориентиры:

  • upload_max_filesize и post_max_size — не меньше размера ваших фото (часто 64M для магазинов)
  • max_execution_time — 120–300 для тяжёлых импортов
  • место на диске аккаунта — если диск забит, uploads молча не пишутся

На shared лимиты меняют в панели хостинга, не в .htaccess с php_value — на части тарифов это даёт 500.

Причина 4. Плагины WebP / AVIF / оптимизации

Плагин WebP и битые изображения WordPress
В HTML ссылка на .webp, а на диске только .jpg — плагин конвертации отключили без отката URL.

ShortPixel, Imagify, EWWW, WebP Express, LiteSpeed Cache с конвертацией — подменяют URL на .webp или отдают другой MIME. Отключили плагин — в контенте остались ссылки на несуществующие webp-файлы.

Диагностика: откройте «Просмотр кода» на битой картинке — какой точный URL? 404 на image.webp при наличии image.jpg — признак «хвоста» оптимизатора.

Решение: включить плагин обратно, прогнать «восстановить оригиналы», или плагин замены URL в БД после бэкапа. На время теста отключите «Picture WebP replacement» в кэш-плагине.

Причина 5. Hotlink protection и жёсткий .htaccess

Защита от хотлинка ломает картинки WordPress
RewriteCond блокирует запросы к uploads с вашего же домена — типичная ошибка после копирования правил.

В .htaccess или в настройках CDN иногда блокируют «чужие» Referer — и случайно режут легитимные запросы с главной страницы (особенно при www ↔ без www или поддомене).

Проверьте блоки RewriteCond %{HTTP_REFERER} — домен в белом списке должен совпадать с тем, как открываете сайт. Временно закомментируйте hotlink-правила и обновите страницу. Если картинки ожили — поправьте условие, не удаляйте защиту полностью без нужды.

Причина 6. Неверный URL сайта после переноса

После переноса на другой домен или в подпапку в БД остаются старые пути https://старый-домен.ru/wp-content/uploads/…. Плагины миграции (Duplicator, All-in-One WP Migration) обычно делают replace — но вложенные сериализованные поля ACF/Elementor иногда пропускают.

Инструмент Better Search Replace (на staging или с бэкапом) — поиск старого домена. Для Elementor — «Инструменты → Замена URL». Подробнее про хостинг и перенос — выбор хостинга и якорь переноса на поддержке.

Причина 7. CDN и кэш отдают старый 404

Cloudflare, KeyCDN или кэш хостинга могут «запомнить» 404 на файл uploads после временного сбоя. Очистите кэш CDN и кэш плагина (WP Rocket, LiteSpeed). Проверьте файл напрямую: https://домен/wp-content/uploads/2024/05/foto.jpg — если в браузере открывается, а на странице нет — виноват кэш HTML или lazy-load скрипт.

Чего не делать

  • Не ставить chmod 777 на uploads — риск загрузки PHP-шелла.
  • Не массово удалять папки uploads/2023 «для экономии места» без бэкапа — сломаете вечные ссылки в статьях.
  • Не включать одновременно три плагина конвертации WebP — конфликт URL и двойная обработка.
  • Не править сериализованные строки в БД вручную в блокноте — сломаете виджеты и настройки темы.

Когда звать специалиста

Если после проверки прав, SSL и лимитов файлы на диске есть, прямой URL открывается, а на сайте всё равно пусто — возможен баг темы, output buffering или кастомный lazy-load. Если в uploads появились чужие .php — это уже взлом, не «настройка медиа».

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

Поделиться: Telegram VK
Сложный случай?

Опишите ситуацию — поможем

Только WordPress. Если статья не закрыла вопрос — напишите, посмотрим конкретно ваш сайт.

Если есть — поможет быстрее оценить задачу.
Необязательно · до 10 МБ · PNG, JPG, PDF, ZIP
Удобный канал связи

URL сайта и краткое описание задачи. Чем больше деталей, тем точнее оценка.

Не передаём третьим лицам · Политика