在本地測試環境除錯 WordPress 不但速度快,也不用擔心裝了不安全的外掛或者主題黑了自己的伺服器。唯一的問題就是整個網站做好了,內容也加了,如何能移植到線上伺服器,並且保證功能不出錯,圖片等地址正確呢?今天就來解決將 WordPress 從本地測試環境向伺服器移植的問題。

Note:本教程僅適用於 Linux 主機 (線上伺服器的作業系統)

準備工作

你應該瞭解以下工具:

  • FTP 或 Cpanel File Manager 工具,用來上傳檔案,會用 SFTP 或者 SSH 更好;
  • 知道如何建立資料庫,如何用 phpmyadmin 或者你的伺服器提供的資料庫操作介面上傳資料庫;
  • 會用程式碼編輯器進行查詢/替換操作,推薦 Notepad++,這個輕量級的編輯器能快速開啟體積大的文字,用記事本很可能讓電腦罷工。

開始移植

1. 將你的網站檔案上傳到線上伺服器,我們假設域名是 www.yourdomain.com 。更改 wp-config.php,將資料庫資訊更新

/** WordPress 資料庫的名稱 */
define('DB_NAME', 'sola_wordpress');

/** MySQL 資料庫使用者名稱 */
define('DB_USER', 'username');

/** MySQL 資料庫密碼 */
define('DB_PASSWORD', 'password');

/** MySQL 主機 */
define('DB_HOST', 'localhost');

2. 訪問管理員介面,匯出資料庫之前需要檢查一些內容,後面會解釋原因。

小工具:檢視小工具的設定選項中是否有涉及到域名的設定,如果有,將域名更新為你的線上地址

主題選項:檢查主題選項是否有涉及到域名的設定,如果有,將域名更新為你的線上地址

外掛選項:同上

3. 匯出資料庫, 如果你本地測試環境是 wampserver,訪問 http://localhost/phpmyadmin, 找到要匯出的資料庫,選擇儲存為檔案匯出。

匯出資料庫圖解

4. 用 Notepad++開啟剛剛儲存的 sql 檔案,查詢你的本地測試地址例如 localhost/wordpress,全部替換成線上地址 www.yourdomain.com

用Notepad++替換地址

5. 將改好的 sql 檔案上傳到伺服器,這時候你就需要訪問 phpmyadmin 了,進去以後找到 import(匯入) 選項,直接選擇檔案上傳匯入即可。

import-database

匯入失敗可能的原因:

1) 資料庫檔案超出伺服器允許的最大體積,上圖紅色方框中顯示的數值就是允許上傳的最大檔案尺寸,614kKiB=614MB,這是 Sola 本地的配置,伺服器一般都比較低,有的可能只有 2M,如果是這樣,需要修改 post_max_size 和 upload_max_filesize 的值,通常可以透過 php.ini 來修改,如果你找不到這個檔案,最好的方法就是聯絡伺服器提供商,每個伺服器的配置都不同,修改方法也不同。

2) 資料庫存在錯誤欄位,如果 mysql 檔案本身有錯誤 (向 mysql 資料庫直接儲存 html 程式碼常常引起資料庫欄位出錯),會導致上傳被中止,這時候應該先在本地修復資料庫,再重複步驟 3 和 4 。

修復資料庫

6. 現在檔案和資料庫都放好了,直接訪問首頁應該可以顯示網站,如果你開啟過固定連結,那麼訪問其它頁面會出現 404 錯誤,因為.htaccess 還保持著測試地址,訪問後臺-> 設定-> 固定連結,什麼都不用改直接點選儲存更改,wordpress 就會自動更新.htaccess,這時候就沒有 404 錯誤了。

7. 如果你沒認真做好步驟 2,可能出現的情況是你的 widget 小工具都消失了,誰叫你偷懶了。去外觀-> 小工具,往下看找到未使用的小工具,就能找到你丟失的小工具了。把他們重新擺回去,更新地址,移植結束。

小工具消失的原因

某些小工具帶有配置選項,這些選項儲存在 wp_options 表中,WordPress 用一種序列化的方式儲存字串,不但記錄字串,還要記錄字串的長度,當字串的實際長度與記錄的長度不相等時,WordPress 就會讀取失敗,所以你的小工具 WordPress 不認識了。

序列化字串長什麼樣?

s:5:"title";

這就是一個序列化的字串,s 表示型別是 string(字串),5 表示字串的長度是 5 個字元,title 就是這個字串的內容了,確實是 5 個字母。

那麼儲存域名會發生什麼情況?

s:26:"http://localhost/wordpress"

全文替換域名以後,就變成了

s:26:"http://www.yourdomain.com"

實際長度是 25,但資料庫裡還寫著 26,錯誤就發生了。

同樣的概念可以應用到所有用 wp_options 儲存資料的模組,例如主題選項,例如外掛選項。

聰明的你一定想到了避免的方法了:保證測試地址和線上地址長度一樣就沒問題了。例如 Sola 的域名和測試地址分別是

www.solagirl.net
localhost/solabk

長度相同,這樣我可以隨意移動,只需要全文替換地址,什麼都不會丟,是不是很方便。

移植後可能出現的問題

1. 小工具消失是最常見的問題,上面已經解釋了

2. 無法上傳圖片

檢查 uploads 資料夾許可權,如果你的伺服器沒安裝 suPHP,那你可能要把資料夾許可權改成 777 了。 777 通常是不安全的,解決的方法就是用指令碼重新建立 uploads 資料夾,然後把檔案都移動過去。這個問題的根源就是資料夾的擁有者是使用者,而程式的擁有者是 apache,直接導致 apache 無法寫入,用程式建立的資料夾擁有者是 apache,不存在這個問題。

3. 出現 404 錯誤

一種可能是.htaccess 沒更新,還有一種可能是主題硬編碼了一些東西,測試的時候最好關閉 wampserver 或者其它測試環境,看看是不是還有的指令碼正在努力的訪問 localhost 。