本網站修繕小註解

因為 WordPress 一直抱怨 PHP v5.6 太老舊又不安全, 我只好破釜沉舟把網站進版. 原本只想換 PHP 就好, 但是看著一些網路教學去做, Apache 還是開不起來, 我又沒有本事 debug. 只好重新裝一個 Xampp. 這樣是能開得起來, 毛病還能一個一個修就是了.

以下紀錄比較重要的步驟, 絕對不是 copy paste 就可以搞定的. 尤其是新的 Xampp 還是用 PHP V8, 本身就跟 V7 有點小衝突.

  1. 將原來的 htdocs 底下的檔案 copy 出來. 這是為了 plugin 和 gallery 的需要. 當然 plugin 都可以重裝, 我要保存的是圖檔.
  2. 以 WordPress 控制台 –> 工具 –> 匯出程式, 將網站備份. 等效做法是從 phpmyadmin 裡面匯出 WordPress 的 sql. 要注意的是 php.ini 預設的 值很小, 我的網站已經很肥了. 所以要改成:
    post_max_size=128M
    upload_max_filesize= 256M
  3. 重新找一個 Xampp 架站, 以 phpmyadmin 開一個 WordPress 資料庫. 當然別忘了幫自己開帳號和權限. 
  4. 安裝 wordpress import 的 plugin (系統在 import 時也會提示). 
  5. 把舊的網站的 ssl key copy 到新的網站 (假設網站 URL 沒變).
  6. 把舊 plugin 和 ngg 目錄都 copy 到新網站.
  7. 安裝 ngg (gallery) 的 plugin in, 不然匯入時會報太多錯誤,
  8. 匯入舊網站的 xml.
  9. 因為新 xampp 的 PHP 是 v8.0, 要去 php.ini 把 extension=gd2 改為 gd. [1] 
  10. 到 ngg 的 plugin 去 scan gallery 目錄下的影像檔.
  11. ngg 已經不支援 shortcode 了, 也就是 slideshow=1 這種, 用新的 UI 插入 ngg 媒體. 到處冒出的 warning 就會消失.
  12. 有些文章剩下一半, 我以為是 php.ini 給的 post size 或是 upload size 太小, 或是 time out 太短? 不過更重要的是 import 文章進來後, 被主動加了一些註解. “<!–[CDATA[" 和 “]]>" 之類的. 這些要到 phpmyadmin 選 wordpress, 然後選搜尋 –> 取代. 把這些東西用空白代換掉, 隱藏的文章就會出來. 但我還沒有辦法處理消失的表格和段落間距. my_sql-620x200
  13. Zbench 這個主題有相容性問題, isHome 這個變數沒有初值, 在 functions.php 裡面, 大約 126 行的地方, 我直接 $isHome = ‘ class="current_page_item"‘;
  14. 預設字體很小, 這個要選外觀 –> 佈景主題檔案編輯器, 然後選 “系統內建的 CSS 編輯器", 把一些設定加到 “自訂項目".my-css
  15. 在 pHpMyadmin 中企圖刪除不需要的 root 帳號, 不知為何突然發生 #1034 的故障, 看了 Youtube 影片才修好. 有好幾片都是類似的. 可參考[2].
  16. 解決 #1034 後, 不再想刪 root, 而是把 phpMyadmin 裡面不需要密碼的 root 帳號都改成需要密碼, 然後我就被踢出去了. 看了[3] 才回想起進去的方法.
  17. 把phpMyAdmin 目錄底下加個 .htaccess 也可以卡住讓人無法使用 phpMyAdmin.

[note]

  1. https://lindevs.com/gd-extension-has-been-renamed-on-windows-in-php-8-0/

[2] How to Resolve error “1034 – index for Db is Corrupt in MYSQL" | Repaire MYSQL tables with xampp – YouTube

[3] 如何設定XAMPP修改phpMyAdmin的MySQL密碼 – ucamc

phpMyAdmin 的權限設定

昨天又找到 wordpress 的 phpMyAdmin 底下被放了一些木馬執行檔, 我在想: 到底 wordpress 到底有哪些地方容易有後門呢?想著想著, 就看到 phpMyAdmin 裡面的權限.

咦? production.mysql.com 的 root 不用密碼就可以登入耶, 這不是個大漏洞嗎?只要先謊報一個 DNS, 自稱是 production.mysql.com, 就可以堂而皇之地登入了. 但這是安裝的預設值, 我也不敢把這個帳號刪掉, 所以我就幫它加了個密碼, 看起來沒事.

接著就把 localhost 的密碼也改了, 結果看到 “建立資料庫連線時發生錯誤". 雖然這個密碼是可以改的, 但是和 wp-config.php 裡面寫得不一樣. 這麼一來, wordpress 就無法透過 phpMyAdmin 去取用 MySQL 裡面的資料庫了. 所以兩者要同時修改才可以.

修復 WordPress 上下標問題

先前就發現了, 即使在編輯器中修改好的上下標字形, 在部落格裡面就硬是爛的. 前陣子寫的幾篇剛好又用到不少上下標, 只好認真去解這個 bug. 

根據 3 年前 moshu 所寫的文章, 這個病因來自於 style sheet.

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}

用來表示上下標的 sub (superscript), 包括 <sub></sub>, 以及表示下標的 sub (subscript), 包括 <sup></sup> 都被 style sheet reset 掉了. 因為單獨寫個測試 html 也是好的, 只不過被 wordpress 的主題給改壞掉.

這個要怎麼改呢?

在 "控制台" 選 "外觀" 的 "佈景主題", 找到 /* reset */, 把那兩個 keyword delete 掉, 再更新檔案就好了.

十三號星期五之網站整修心得

本年度的第一個黑色星期五 (2012/1/13), 我發現我網站的文章變成不能修改了! 凡是貼出去的東西, 變成起手無回的狀態, 只要發表出來, 一個標點都改不了. 這也就罷了, 連想貼的圖也貼不出來.

上網 Google 了一下, 有人說改這裡, 有人說改那裡. 試了一下都沒有效果. 根據我的判斷, 應該是 wordpress 到 SQL 這中間出了問題. 在 wordpress 已經完成的動作, 再去 phpMyAdmin 裡面匯出 .sql 來看, 其實都沒有修改到. 所以, 我就再度重灌了.

這其中我又犯了幾次錯, 差點改不好, 所以特別寫下來給大家參考.

1. 重新安裝 apache 2.5.10 之後, 必須先到 phpMyAdmin 裡面去新增一個 wordpress (或是其他 blog 的名字), 裡面可以全空的. 這樣進到 wordpress 去跑 wp-pconfig.php 時, 才不會說沒有權限. 連 database 都不存在當然沒有權限了. 如果 wordpress 已經存在了, 當然就沒問題.

2. 新增的 wordpress 需要把以前備份的 .sql 匯入, 這樣網站才能恢復, 光是把整個目錄 copy 起來是沒有用的, 因為 apache 已經重新來過. 先前我一時不察, 在備份網站時, 把 mysql, test, phpmyadmin 這三個預設的資料庫和 wordpress 一起備份了. 等到要匯入的時候, phpMyAdmin 就抱怨 mysql 已經存在, 故不允許匯入!

把現有的 mysql 先殺掉嗎? 很抱歉, 每個資料庫都殺得掉, 就是 mysql 只能清空, 卻不能刪除. 幸好 .sql 本身就是一個文字檔, 只要到 .sql 裡面, 把多餘的資料庫 delete 掉就好了. 它的格式很清楚, 可以很容易辨識. 這樣匯入就可以成功了.

它的表頭是這樣, 一直砍到資料庫: 'wordpress' 就成啦!


— 資料庫: `mysql`

CREATE DATABASE `mysql` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `mysql`;

— ——————————————————–

3. 網站剛改好時, 進入管理員就看得到畫面. 從 URL 進去首頁卻是一片空白. 看了一下控制台, 才發現 theme 沒有跟著搬過來. 雖然 wordpress 自己說會用預設主題代替, 但是其實不行. 這邊只要把原先的主題搬家過來就好.

4. 最後就是補上基本的防護配備, 大家應該不會想讓每個人都看得到 phpMyAdmin 這一樣, 或是可以執行 wp-config.php 吧. 那就改一改吧! 至於不需要搬過來的東西和不必要的更新, 我就先不管了. 原先不能更新文章的 bug  一定就在某次的更新之中. 這次重灌又浪費了我不少時間, 改好之後連總統都選出來了…

更新到 wordpress 2.8

昨天更新了本站的版本到 2.8 版. 這次的更動意外地順利, 我想可能是外掛 wordpress automatic upgrade 被關掉了的關係. 原本自動升級的功能在某個時間點之後就再也沒有成功過了, 這次一按就 OK 還真是大喜過望! 如果有網友遇到自動更新失敗, 上傳 2~3 秒就 time out 的時候, 可以考慮把我懷疑的外掛關掉. 甚至是把所有的外掛都關掉!

這次升級過後, 我也赫然發現我的 slide show 功能全部不見了. 雖然我拍的照片的確不怎麼樣, 但是 slide show 功能失效我還是頗為在意的. 檢查了一下, Nextgen Gallery 更新之後, 它指定要配合 3.17 版的 Imagerotator 才能夠做 slide show. 平常從 gallery 裡面貼圖的功能還是不受影響!

把 imagerotator 抓回來以後, Nextgen Gallery 的 slide show 選項下面有提示:  要把 imagerotator.swf 放在 URL wp-content/uploads 下面. 起先我把它當作 plugin 一樣, 給了一個目錄名稱, 然後再按 search, 結果是失敗的. 想來想去還是滿頭霧水, 甚至想跳槽到 slideshow 那個外掛下算了. 不過靈機一動, 把 imagerotator.swf 直接放在 wp-content/uploads 下面的那一層, 不要再加子目錄. 按下 search 之後, 安裝就正式完成. 回去看 slideshow 也就都播得出來了~~~

 2.8 版有甚麼特色呢? 請參考:

升级必读:WordPress 2.8十大改进与更新详解

WordPress 2.8版推出

感覺改得不多, 主要是主題管理進步了, 還有更多外掛變得不相容了.