cPanel 的站点软件插件禁用 WordPress 自动更新
已发表: 2015-05-15两个多月前,用户名为 Drumology2001 的 Derek Munson 在 WordPress.org 支持论坛上发布了一个帖子。 在对他的虚拟专用服务器上的几个 WordPress 站点进行维护时,Munson 发现其中一些运行的是过时的版本。 版本范围从 3.9 到 4.1,至少有一个站点使用 WordPress 3.9.2。
我习惯于在屏幕顶部看到“唠叨”,让我知道有更新的版本可用。 我没有在任何不在最新版本(4.1.1)上的网站上看到这一点。 当我转到仪表板 > 更新并单击“再次检查”以强制进行手动检查时,它仍然表现得好像一切都是最新的,但显然不是。
最初,Munson 认为 All in One WP Security and Firewall 阻止了更新通知。 该插件的主要开发人员 Mbrsolution 确认它不会阻止更新通知。 在完成了志愿者在 WordPress 支持论坛上建议的一些故障排除技术后,Munson 安装了 Wordfence Security,一个 WordPress 安全插件。
Wordfence 值得注意的功能之一是它的扫描仪。 它将干净的 WordPress 核心文件与服务器上的文件进行比较,并在检测到差异时通知用户。 扫描结果显示三个文件已被更改。
wp-admin/includes/update.php
wp-admin/update-core.php
wp-admin/includes/class-wp-upgrader.php
这些文件仅在使用 cPanel 的站点软件插件安装的 WordPress 站点上进行了更改。
WordPress 的update.php 文件。
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 );
WordPress 的update-core.php 文件。
function core_upgrade_preamble() { global $wp_version, $required_php_version, $required_mysql_version; $updates = get_core_updates();
cPanel 的update-core.php 文件。
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();
WordPress 的class-wp-upgrader.php 文件。
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;

cPanel 的class-wp-upgrader.php 文件。
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 更新、更新通知和自动后台更新到点发布。 一旦 Munson 将这些文件恢复到原始版本,自动更新和通知就会正常工作。
cPanel 和 cPAdons
使用 cPanel 管理专用服务器或虚拟专用服务器的人员可以使用 cPAddons。 根据 cPanel 文档,“插件是与 cPanel 一起为您的用户网站执行功能的应用程序。 这些应用程序的示例包括公告板、在线购物车和博客。”
与 cPanel 开启对话
WordPress 核心贡献者和 Jetpack 的首席开发人员 George Stephanis 公开称 cPanel 的行为是一种不好的做法。
等等,认真的? @cPanel 正在破解 WordPress 核心以阻止更新? 我有点傻眼了,这是多么糟糕的想法。 #donthackcore
— 乔治stephanis (@daljo628) 2015 年 5 月 11 日
cPanel 的一位代表看到了这条推文,并回应说他们希望收到更多信息。
https://twitter.com/cpanelcares/status/597886956945711107
Stephanis 与 cPanel 代表进行了长时间的交谈,解释了为什么禁用核心更新是一个坏主意。 cPanel 会禁用 WordPress 的本机更新系统,因为它可能会导致与 cPanel 的 WordPress 站点软件版本发生冲突。
我们通常会在 WordPress 最新更新后的 1 到 5 天内发布最新版本的 WordPress。 至少,服务器管理员每晚都会收到所有需要更新的站点软件应用程序的通知。 用户可以在 cPanel 中配置他们的通知以接收此类更新。
我们的 cPAddons 工具跟踪软件的方式与 WordPress 更新的方式不兼容,因此我们禁用自动更新以便我们可以通过 cPAddons 跟踪它。
cPanel 继续解释如何处理使用其站点软件 cPAddon 安装的软件的更新。
- 每当 WP 发布解决安全问题的维护版本时,我们都会迅速做出反应以更新我们的软件以供客户使用。
- 默认情况下,我们定义通过 cPAddons 管理/安装的软件在有新更新可用时自动更新。
- 根据以上信息,如果服务器管理员启用默认设置,一旦 WP 引入了纠正安全问题的维护版本并且我们已经测试并更新了我们的源,客户将自动收到该版本。
- 如果服务器管理员决定禁用自动软件更新,最终用户和系统管理员仍会收到有关其安装已过期的通知以及有关如何更新其应用程序的步骤。
默认情况下,cPanel 安装的软件配置为自动更新,但 Munson 的一些站点没有更新。 他也没有收到这些网站的更新通知。 cPanel 认为 Munson 的服务器配置有问题,并承诺与他联系以了解更多信息。
根据 Drumology2001 在论坛上的报道,该服务器似乎有问题。 我们很乐意检查该服务器以确定用户无法使用 WordPress 更新的原因。
根据论坛上使用的模糊日期并与我们的内部记录进行比较,4.1.1 更新在首次发布之前可用于站点软件系统。 我们将与他联系,以确定我们是否可以在那里做任何事情。
接受改变
好消息是 cPanel 响应迅速,愿意做出任何必要的更改来改进更新过程。 考虑到有多少虚拟主机公司为客户提供通过一键式安装程序安装 WordPress 的能力,网站尽快接收更新非常重要。
如果您通过 cPanel 的一键式安装程序安装了 WordPress,请检查以确保您的站点正在运行 WordPress 4.2.2,这是最新的稳定版本。
