Skip to Content

近日 Drupal 6 的一些雞毛蒜皮大小事

最近管理的 Drupal 6 網站遇到了一些奇怪的狀況,處理的過程中也學到一些東西,簡單記錄一下。

首先是在回應時,某些回應內容會產生奇怪的錯誤。但那些內容若是放在貼文中,就沒有問題。或是先貼個簡單的回應,然後進入編輯,改成先前會有問題的回應內容,此時也沒有問題了。總之,這情況只發生在新張貼「回應」,而且只有某些情況才會有錯誤。

【系統更新篇】

因為情況很詭異,一時之間也不知如何下手,所以首先想到是:「要不要先放著,等升級到 Drupal 8 也許就好了?」

會這樣想,主要是因為 Drupal 6 已經壽終了,官方沒有繼續在開發及更新。至於為什麼是 Drupal 8 而不是 7 呢?因為 8 比較新嘛,而且它宣稱以行動裝置優先,也就是說,採用這個版本就不用額外擔心手機與平板的使用者,因為系統都已經考慮到了。

雖然現在還沒時間研究更新的問題,還是忍不住想抽空看一下 Drupal 8 長什麼樣子。於是下載了「TWAMP 麻瓜架站包 2016.520 霧島就職紀念版」,試架了一下,沒什麼特別困難,的確在行動裝置效果也不錯(其實我只是把瀏覽器縮小模擬看看而已),的確是響應式設計的網頁。

這個版本直接支援所見即所得的編輯界面(WYSIWYG),不過實在很陽春,我在 Drupal 6 安裝的版本就不知比它漂亮好用多少倍,這已經在我心中扣了不少分了。

再稍為研究由 Drupal 6 更新至 Drupal 8 的方法,發現這種升級還沒有完全準備好,有些模組只算是實驗性質,我挑了一個小站測試了一下,果然無法完全升級,有好些地方還有問題,這可麻煩了。

幾番斟酌考慮,打算暫時只升級到 Drupal 7 好了。因為變化比較小,似乎比較可以安全升上去,而且 Drupal 7 也有一些版型是響應式的,應該也能支援行動裝置,Drupal 7 的成熟度應該也蠻可以信任的,不像 D8 (用簡稱好了,一直打字好累) 好像還不夠成熟,我想這樣是比較能接受的方案。

【程式捉蟲篇】

升級應該暫時也還沒空進行,所以就想到來除錯好了。

這種網站的除蟲,實在很難進行,我是把 D6 的 php 原始程式陸續很多中斷點,因為無法即時呈現內容,所以採用的方法是在那些中斷點把變數存到記錄檔中,再來比對錯誤的情況與正常的情況。

就這樣不斷在程式中插入中斷點、上傳程式到網站,執行會錯誤的情況,然後下載記錄檔來比對。就這樣不斷的追蹤進去,終於發現一些端倪,看出有特別狀況的地方了。

又經過幾番細心的比對,結果卻發現差異是一開始傳入的資料就不同。也就是 $_GET 和 $_POST 的內容一開始就不對勁了。

原來問題並不是程式沒有正確處理傳入的內容,而是內容根本沒有傳入。

再仔細分析,主機原來一開始就給了 403 Permission denied 的錯誤訊息,是因為程式本身包裝過這類錯誤訊息,所以才沒有在一開始就看出來,真的是白跑了好多冤枉路。

【主機安全篇】

繼續網路爬文,才知道這類訊息是系統的安全設定,可以試著關掉,也就是在 .htaccess 檔案中加上如下內容。

<IfModule mod_security.c>
  SecFilterEngine Off
  SecFilterScanPOST Off
</IfModule>

<IfModule mod_security2.c>
  SecFilterEngine Off
  SecFilterScanPOST Off
</IfModule>

有的人只寫第一組,有人則建議二組都寫,這是關掉 mod_security 1.x 版及 mod_security 2.x版 的設定。

不過也有但書,如果關閉這些,日後安全更新就要儘早執行,以免安全有漏洞。

設定之後若出現 500 的錯誤,那就要與主機商聯絡才行了,因為有些會設定成無法關閉。

我加上二組之後,果然出現 500 錯誤訊息。如果只加第一組,則沒有錯誤訊息,但先前的錯誤依然存在,沒有任何幫助。

在用盡一切方法之後,只好用破英文開始與主機租用商聯絡,總算在數封信往來之後,他們成功的把我的問題解決掉了。

目前就暫時用下去,等到有較多的空閒時,再來正式研究 D6 升級 D7 的問題了。

回應

發表新回應

這個欄位的內容會保密,不會公開顯示。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。
  • 可使用的 HTML 標籤:<a> <address> <b> <blockquote> <br> <caption> <center> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <h1> <h2> <h3> <h4> <h5> <h6> <hr> <i> <img> <ins> <li> <ol> <p> <pre> <span> <strike> <strong> <sub> <sup> <table> <tbody> <td> <th> <tr> <u> <ul>
    Allowed Style properties: background, background-attachment, background-color, background-image, background-position, background-repeat, border, border-bottom, border-bottom-color, border-bottom-style, border-bottom-width, border-collapse, border-color, border-left, border-left-color, border-left-style, border-left-width, border-right, border-right-color, border-right-style, border-right-width, border-spacing, border-style, border-top, border-top-color, border-top-style, border-top-width, border-width, bottom, caption-side, clip, color, direction, empty-cells, font, font-family, font-size, font-size-adjust, font-stretch, font-style, font-variant, font-weight, height, left, letter-spacing, line-height, list-style, list-style-image, list-style-position, list-style-type, margin, margin-bottom, margin-left, margin-right, margin-top, max-height, max-width, min-height, min-width, overflow, padding, padding-bottom, padding-left, padding-right, padding-top, right, table-layout, text-align, text-decoration, text-indent, text-transform, top, unicode-bidi, vertical-align, white-space, width, word-spacing, z-index

更多關於格式選項的資訊

CAPTCHA
驗證碼只有阿拉伯數字, 這是躲廣告用的, 麻煩你輸入了.
Image CAPTCHA
Enter the characters shown in the image.


story | about seo