День программиста 13 сентября: Site Health не достучался до WordPress.org

11 сентября 2026 года в админке WordPress на двух разных хостингах одно и то же: Site Health не достучался до WordPress.org. Ошибка cURL 28, десять секунд, адрес 66.6.42.251. Через два часа ping до wordpress.org на соседнем 66.6.42.252 шёл за 129–130 мс. Сайт у посетителя при этом может открываться как ни в чём не бывало.

13 сентября, воскресенье, 256-й день года: официальный День программиста. К празднику это выглядит как «заблокировали wordpress.org». По двум хостингам и одному ping так говорить рано. Ниже: что именно проверяет админка, почему ping не опровергает таймаут PHP и как обновляться, если кнопка в «Обновлениях» молчит.

Что увидели 11 сентября

Сообщение из Site Health, как его прислали с двух площадок в 11:12:

«Подключение к серверам WordPress.org используется для проверки новых версий, установки и обновлений WordPress, плагинов и тем. Ошибка: Ваш сайт не смог подключиться к WordPress.org по 66.6.42.251, и вернул ошибку: cURL error 28: Connection timed out after 10001 milliseconds».

В 13:28 с другой машины ушёл ping на wordpress.org [66.6.42.252], 32 байта данных. Три ответа: 130 мс, 129 мс, 129 мс, TTL 51. Потери не было.

Это не противоречие и не доказательство, что «всё уже ожило». Это два разных протокола и два разных IP.

Что на самом деле дёргает Site Health

Тест «связь с WordPress.org» живёт в WP_Site_Health::get_test_dotorg_communication(). Он не пингует wordpress.org. Он делает wp_remote_get( 'https://api.wordpress.org' ) с таймаутом 10 секунд. 10001 миллисекунда в ошибке: PHP ждал чуть больше этих десяти секунд и сдался. Байтов в ответ не пришло.

Страница developer.wordpress.org: метод WP_Site_Health::get_test_dotorg_communication()
Официальное описание теста Site Health: связь с WordPress.org, исходник wp-admin/includes/class-wp-site-health.php. Снимок 11.09.2026. Источник: developer.wordpress.org, get_test_dotorg_communication().

IP в тексте ошибки берётся из gethostbyname( 'api.wordpress.org' ), не из A-записи wordpress.org. На 11 сентября 2026 года DNS выглядел так:

  • wordpress.org → 66.6.42.252
  • api.wordpress.org → 66.6.42.251
  • downloads.wordpress.org → 66.6.42.250

Елена упёрлась в .251, Maxim пинговал .252. ICMP до витрины и HTTPS из PHP до API: разные двери. Фильтр на 443 может резать API, а ping при этом зелёный. Обратное тоже бывает: ICMP закрыт, обновления ставятся.

Это ещё не запись в реестре

Официального сообщения Роскомнадзора о блокировке wordpress.org на момент подготовки материала нет. Форма проверки в едином реестре и на blocklist.rkn.gov.ru требует капчу, живую выгрузку «wordpress.org есть / нет» отсюда не снять. Третьи стороны тоже не показали готовой карточки блокировки. Писать «внесли в реестр» по таймауту PHP нельзя.

Картина 11 сентября другая. С отдельного VPS в 15:00 MSK HTTPS до wordpress.org отдавал 200 примерно за 1,2 с, до api.wordpress.org: 302 за 0,56 с, до downloads.wordpress.org: 302 за 0,56 с. Ping до .251 и .252 шёл около 179 мс, потерь не было. Запрос version-check 1.7 ответил оффером WordPress 7.1. Сами серверы проекта в этот час не лежали.

Два хостинга с одним и тем же cURL 28: это уже не «сломан PHP на одном тарифе». Это исходящий HTTPS с площадки, где крутится сайт. ТСПУ на пути провайдера, фильтр исходящих у хостера, IPv4-only у PHP при кривом AAAA, таймаут на середине пути. Без traceroute и без curl с самого хостинга гадать, какой из вариантов, бессмысленно.

Что ломается на рабочем сайте

Витрина от этого теста не падает. Падает канал, которым ядро ставит и обновляет само себя, плагины и темы: api.wordpress.org и downloads.wordpress.org. «Плагины → добавить новый», «Обновления», фоновые мелкие патчи, проверка версии, иногда перевод пакетов. Сайт при этом может открываться с телефона, из офиса и из дома.

Актуальное ядро на 11 сентября 2026: WordPress 7.1, релиз 19 августа, страница архива релизов. Точечный 7.1.1 по расписанию Make WordPress Core намечен на 17 сентября. Если к четвергу кнопка в админке так и не достучится до API, патч сам не приедет.

Сначала диагностика с хостинга, не ping с ноутбука

Проверять нужно там, где крутится PHP: SSH, терминал панели, WP-CLI. Ping с домашнего Windows до wordpress.org отвечает на другой вопрос.

getent hosts api.wordpress.org wordpress.org downloads.wordpress.org
curl -4 -Iv --max-time 15 https://api.wordpress.org/
curl -4 -Iv --max-time 15 https://downloads.wordpress.org/
curl -4 -sS --max-time 15 "https://api.wordpress.org/core/version-check/1.7/" | head

Если DNS резолвится, а HTTPS висит до таймаута: фильтр или обрыв на 443. Если HTTPS с SSH проходит, а Site Health в админке нет: смотреть PHP, исходящие у FastCGI/FPM, security-плагин, не IPv6 ли тянет PHP в чёрную дыру. Если с SSH тоже 28, писать хостеру: исходящий HTTPS на api.wordpress.org и downloads.wordpress.org, не «почините ping».

WP-CLI, если бинарь есть:

wp core version
wp core check-update
wp plugin list --update=available

Те же таймауты, что у админки, означают: CLI ходит в ту же API и тоже не пролезет. Отключать проверку TLS «чтобы заработало» не стоит. Это не лечение фильтра, а дырка в канал обновлений.

Если кнопки в админке нет, а браузер wordpress.org открывает

Исходящий с хостинга и входящий в браузер: разные пути. Zip ядра по-прежнему лежит на wordpress.org/download. Ручное обновление: бэкап файлов и базы, затем шаги из официальной инструкции Updating WordPress. Коротко: не трогать wp-config.php и содержимое wp-content, кроме файлов, которые ядро само перезаписывает; wp-admin и wp-includes менять целиком; после заливки зайти в /wp-admin/ и при необходимости пройти upgrade.php.

Плагин и тему в таком режиме ставят zip-ом из каталога, если страница плагина в браузере открывается, или с зеркала, которому вы доверяете. Случайный zip с форума: это уже не «обошли таймаут», а неизвестный код на проде.

Перед любой ручной заливкой: копия, не пятничный деплой «на глаз» и не отключение файрвола «на всякий случай».

13 сентября: праздник, не отгул у хостера

День программиста в России: 256-й день года. В обычный год это 13 сентября, в високосный 12-е. 2026-й обычный. Это закрепил указ Президента РФ от 11.09.2009 № 1034. Профессиональный праздник, не нерабочий день из Трудового кодекса. Касса и хостинг в воскресенье работают. Site Health с cURL 28 сам не починится, потому что «256».

Имеет смысл в пятницу-субботу: бэкап, посмотреть, ставится ли обновление, если нет: zip на диске и письмо хостеру, а не сюрприз в понедельник, когда 7.1.1 уже в расписании. Баги, которые не жрут заказы, могут подождать. Канал обновлений ядра лучше не оставлять на «разберёмся после праздника».

Коротко

  • 11.09.2026, два хостинга: Site Health → api.wordpress.org 66.6.42.251, cURL 28 после 10 с.
  • Ping до wordpress.org 66.6.42.252 в тот же день отвечал. Это не проверка API.
  • С отдельного VPS около 15:00 MSK HTTPS до org/api/downloads открывался, version-check отдавал WordPress 7.1.
  • Записи wordpress.org в реестре запрещённых сайтов на этот час нет в виде проверяемого факта. «Заблокировали» из таймаута не следует.
  • Сайт может жить, кнопка обновлений: нет. Диагностика: curl с хостинга, не ping с ноутбука. Дальше: хостер или ручной zip по официальной инструкции.

Источники и ссылки


Комментарии загружаются…