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,這是最新的穩定版本。
