在本地測試環境調試 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

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

導入失敗可能的原因:
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 。