Программное дополнение сайта cPanel отключает автоматическое обновление WordPress
Опубликовано: 2015-05-15Чуть больше двух месяцев назад Дерек Мансон, известный под ником Drumology2001, опубликовал ветку на форуме поддержки WordPress.org. Выполняя обслуживание нескольких сайтов WordPress на своем виртуальном частном сервере, Мансон обнаружил, что на некоторых из них установлены устаревшие версии. Версии варьировались от 3.9 до 4.1 по крайней мере с одним сайтом, использующим WordPress 3.9.2.
Я привык видеть «ворчание» в верхней части экрана, которое сообщает мне, что доступна более новая версия. Я не вижу этого ни на одном из этих сайтов, кроме самой новой версии (4.1.1). Когда я иду в «Панель инструментов»> «Обновления» и нажимаю «Проверить еще раз», чтобы принудительно выполнить ручную проверку, он по-прежнему ведет себя так, как будто все обновлено, хотя это явно не так.
Первоначально Мансон думал, что All in One WP Security and Firewall блокирует уведомления об обновлениях. Mbrsolution, главный разработчик плагина, подтвердил, что он не блокирует уведомления об обновлениях. После выполнения ряда методов устранения неполадок, предложенных добровольцами на форуме поддержки WordPress, Мансон установил Wordfence Security, плагин безопасности WordPress.
Одной из примечательных особенностей Wordfence является сканер. Он сравнивает чистые файлы ядра WordPress с файлами на сервере и уведомляет пользователя, если обнаруживает разницу. Результаты сканирования показывают, что три файла были изменены.
wp-admin/includes/update.php
wp-admin/update-core.php
wp-admin/includes/класс-wp-upgrader.php
Эти файлы были изменены только на сайтах WordPress, которые были установлены с помощью дополнения cPanel Site Software.
Файл update.php WordPress .
function get_core_updates( $options = array() ) { $options = array_merge( array( 'available' => true, 'dismissed' => false ), $options ); $dismissed = get_site_option( 'dismissed_update_core' );
файл cPanel update.php.
function get_core_updates( $options = array() ) { # cPanel override: Disable all core updates to prevent conflict with cPAddons. return false; $options = array_merge( array( 'available' => true, 'dismissed' => false ), $options );
Файл update-core.php WordPress .
function core_upgrade_preamble() { global $wp_version, $required_php_version, $required_mysql_version; $updates = get_core_updates();
Файл update-core.php cPanel .
function core_upgrade_preamble() { # cPanel override: Do not display the current or the latest version, because we've disabled updates. return; global $wp_version, $required_php_version, $required_mysql_version; $updates = get_core_updates();
Файл class-wp-upgrader.php WordPress .
public function is_disabled() { // Background updates are disabled if you don't want file changes. if ( defined( 'DISALLOW_FILE_MODS' ) && DISALLOW_FILE_MODS ) return true;
Файл class-wp-upgrader.php cPanel .
public function is_disabled() { return true; // Force this functionality to disabled because it is incompatible with cPAddons. // Background updates are disabled if you don't want file changes. if ( defined( 'DISALLOW_FILE_MODS' ) && DISALLOW_FILE_MODS ) return true;
Код, добавленный cPanel, отключает основные обновления WordPress, уведомления об обновлениях и автоматические фоновые обновления для точечных выпусков. Как только Мансон восстановил эти файлы до их исходной версии, автоматические обновления и уведомления заработали правильно.
cPanel и cPAddons
Те, кто управляет выделенными серверами или виртуальными частными серверами с помощью cPanel, могут использовать cPAddons. Согласно документации cPanel, «аддоны — это приложения, которые работают с cPanel для выполнения функций веб-сайтов ваших пользователей. Примеры таких приложений включают доски объявлений, интернет-магазины и блоги».

Открытый диалог с cPanel
Джордж Стефанис, основной участник WordPress и ведущий разработчик Jetpack, публично назвал действия cPanel плохой практикой.
Подожди, серьезно? @cPanel взламывает ядро WordPress, чтобы предотвратить обновления? Я немного ошеломлен тем, насколько это плохая идея. #донхаккор
— Джордж Фефанис (@daljo628) 11 мая 2015 г.
Представитель cPanel увидел твит и ответил, что хотел бы получить больше информации.
https://twitter.com/cpanelcares/status/597886956945711107
Стефанис долго беседовал с представителями cPanel, объясняя, почему отключать обновления ядра — плохая идея. cPanel отключает собственную систему обновлений WordPress, потому что это может вызвать конфликты с версией WordPress для cPanel Site Software.
Обычно мы выпускаем последнюю версию WordPress в течение 1–5 дней после последнего обновления WordPress. Как минимум, администраторы сервера каждую ночь информируются обо всех приложениях Site Software, которые нуждаются в обновлении. Пользователи должны настроить свои уведомления в cPanel для получения таких обновлений.
То, как наш инструмент cPAddons отслеживает программное обеспечение, несовместимо со способом обновления WordPress, поэтому мы отключаем автообновления, чтобы мы могли отслеживать их через cPAddons.
Далее cPanel объясняет, как обрабатываются обновления для программного обеспечения, установленного с помощью Site Software cPAddon.
- Всякий раз, когда WP выпускает отладочную сборку, направленную на решение проблем безопасности, мы очень быстро реагируем, чтобы обновить наше программное обеспечение, чтобы оно стало доступным для клиентов.
- По умолчанию мы определяем, что программное обеспечение, управляемое/установленное через cPAddons, автоматически обновляется, когда доступно новое обновление.
- Основываясь на приведенной выше информации, если администратор сервера оставит настройки по умолчанию включенными, как только WP представит отладочную версию, которая устраняет проблемы безопасности, и мы протестируем и обновим для нее исходный код, клиенты получат эту версию автоматически.
- Если администратор сервера решит отключить автоматические обновления программного обеспечения, конечный пользователь и системный администратор все равно будут получать уведомления о том, что их установка устарела, а также инструкции по обновлению своего приложения.
По умолчанию программное обеспечение, установленное cPanel, настроено на автоматическое обновление, но некоторые сайты Мансона не обновлялись. Он также не получал уведомлений об обновлениях для этих сайтов. cPanel считает, что с конфигурацией сервера Мансона что-то не так, и пообещала связаться с ним, чтобы узнать больше информации.
Судя по сообщениям на форуме Drumology2001, на этом сервере что-то не так. Мы хотели бы изучить этот сервер, чтобы определить, почему обновления WordPress были недоступны для пользователя.
Судя по нечетким датам, использованным на форуме, и по сравнению с нашими внутренними записями, обновление 4.1.1 было доступно для системы программного обеспечения сайта до первоначальной публикации. Мы свяжемся с ним, чтобы определить, можем ли мы что-нибудь там сделать.
Восприимчивость к изменениям
Хорошей новостью является то, что cPanel реагирует и готова внести любые необходимые изменения для улучшения процесса обновления. Учитывая, как много веб-хостинговых компаний предлагают клиентам возможность установить WordPress с помощью установщика в один клик, важно, чтобы сайты получали обновления как можно скорее.
Если вы установили WordPress с помощью установщика cPanel в один клик, убедитесь, что на вашем сайте установлена последняя стабильная версия WordPress 4.2.2.
