WordPress版本更新非常頻繁。這個月WordPress 3.2的Beta 1版本已經(jīng)發(fā)布,如果不出意外,下個月我們會迎來3.2正式版。如果你可以從后臺管理面板升級,更新到WordPress新版本不是難事:你只需要登錄、點擊若干個按鈕、等上幾分鐘然后就升級成功了。不過WordPress自動升級帶來的不只是方便,你也有可能遇到升級失敗的問題。如果自動升級沒有成功,你沒法像在WORD里一樣撤銷之前的操作,下面我們就來說說怎么在自動升級失敗后恢復(fù)網(wǎng)站并確保成功升級。
如果自動升級失敗......
在后臺點擊自動升級(假設(shè)從WordPress 3.1.0升級到3.1.1)后,升級界面會出現(xiàn)如下信息:
- 從http://wordpress.org/wordpress-3.1.1.zip…下載更新
- 解壓更新
- 驗證解壓文件...
- 安裝最新版本...
一直到這里都很正常,但是之后有可能會出現(xiàn)兩種情況,一種是升級成功,另一種就是今天要討論到的升級失。
“Installation Failed(安裝失敗)”前的狀態(tài)信息解釋了WordPress認(rèn)為的升級失敗原因所在,有時候系統(tǒng)可能不顯示任何狀態(tài)信息。無論在哪種情況下,這時用戶已經(jīng)失去對網(wǎng)站的控制權(quán)了。自動升級失敗后,加載任何網(wǎng)站頁面——后臺、首頁、登錄頁等——都只能看到類似這樣的WordPress維護(hù)頁面:
在無法登入網(wǎng)站管理界面的情況下,要解決問題真是件讓人沮喪的麻煩事。幸好這時候不登入后臺也可以把網(wǎng)站找回來。登入FTP,進(jìn)入根目錄,刪除.maintenance文件。文件名的開始部分是一個點,如果你沒有用FTP找到這個文件,可以試試登入服務(wù)器的控制板,然后通過文件管理器找到這個文件并刪除。下面是.maintenance文件在根安裝目錄下的顯示截圖:
.maintenance文件包含一個wp_maintenance函數(shù)使用的變量,類似于:
<?php $upgrading = 1302115706; ?>
如果你被自己的網(wǎng)站拒之門外了,刪除.maintenance文件可以讓你回到管理后臺以及網(wǎng)站的其他頁面。當(dāng)你回到后臺后,WordPress會提醒你最近更新失敗并顯示如下信息:
這時候你有(至少)兩個選擇:繼續(xù)嘗試自動升級,或者下載最新版本并手動上傳。即使你這一次選擇了手動升級,最好也了解一下怎么解決自動升級失敗問題。
檢查文件權(quán)限
正確的文件權(quán)限是成功完成任何自動程序的關(guān)鍵所在。WordPress手冊在介紹后臺升級子菜單時,在其中的疑難解決部分建議到:確保你的WordPress目錄由Apache服務(wù)器的用戶名所有。
除此之外,你可能還需要更改/upgrade/目錄權(quán)限。從下面的截圖中可以看到,WordPress用/upgrade/目錄存儲升級過程中的臨時文件。
對需要新建的臨時WordPress文件來說,/upgrade/目錄應(yīng)是服務(wù)器可寫入的。為確定這是否問題所在,可以試著把目錄權(quán)限改為 777(或CHMOD等值),然后重試自動升級。如果升級成功,問題就解決了,但從此你需要一直使用可能的最高權(quán)限。這需要你去研究、嘗試或者咨詢主機(jī)提供商,但了解最高權(quán)限之后,你就可以安心地自動升級了。
關(guān)閉安全模式
禁用安全模式有可能讓你的自動升級重新奏效。根據(jù)PHP手冊,PHP 5.3.0開始不再采用安全模式。
我們可以通過多種方式關(guān)閉安全模式。如果你不能通過服務(wù)器的控制臺關(guān)閉安全模式,可以在php.ini文件里加上下面的代碼實現(xiàn)安全模式禁用:
safe_mode = Off
或者你也可以在Apache配置文件里加上下面的代碼:
<Directory /var/www/public> php_admin_flag safe_mode off </Directory>
只要在httpd.conf文件添加上面的內(nèi)容然后重啟Apache即可。
在wp-config.php文件內(nèi)定義FTP變量
在你的wp-config.php文件里定義必需變量,是讓自動升級重新工作的又一個方法。這種方法有很多不同形式,所以你需要根據(jù)以往的經(jīng)驗根據(jù)自己的具體情況進(jìn)行定義。下面是一個示例,僅供參考:
define('FS_CHMOD_FILE', 0755); define('FS_CHMOD_DIR', 0755); define('FS_METHOD', 'ftpext'); define('FTP_BASE', '/httpdocs/'); define('FTP_CONTENT_DIR', '/httpdocs/wp-content/'); define('FTP_PLUGIN_DIR ', '/httpdocs/wp-content/plugins/'); define('FTP_USER', 'username'); define('FTP_PASS', 'password'); define('FTP_HOST', '123.456.789'); define('FTP_SSL', false);
把上面的代碼貼入wp-config.php文件中”That’s all, stop editing! Happy blogging.”的上方。別忘了把代碼里的用戶名、密碼等變量換成自己的信息。
可能你覺得上面這些操作有些麻煩,不過WordPress自動升級為我們節(jié)省了如此多的時間,完全值得我們多花一點時間來解決自動升級遇到的問題,成功實現(xiàn)事半功倍的效果。
翻譯原文:http://www.wordpress.la/deal-with-auto-upgrade-failture.html英文原文:http://digwp.com/2011/04/wordpress-auto-updates/